procedure  CS is
   V_PRPSPERSON          varchar2(100);
   V_count  NUMBER ;
BEGIN
    V_PRPSPERSON := '''172506213'''||','||'''172506211''' ;
    
    SELECT COUNT(*) INTO v_count from PRPSperson a WHERE a.usercode IN (V_PRPSPERSON);
end CS;
oracle 存储过程 拼接完字符串,用in 方法为什么不行,求大神帮忙!急急急

解决方案 »

  1.   

    如果硬是要用拼接的字符串,就只能写动态SQL了。
      

  2.   

    要用动态SQL,或者游标循环去处理
      

  3.   

    不需要用到游标,写个动态SQL,然后execute immediate 执行就行。
      

  4.   

    procedure  CS is
       V_PRPSPERSON          varchar2(100);
       V_count  NUMBER ;
       V_sqlstr varchar2(1000);
    BEGIN
        V_PRPSPERSON := '''172506213'''||','||'''172506211''' ;
        V_sqlstr:='SELECT COUNT(*) from PRPSperson a WHERE a.usercode IN ('||V_PRPSPERSON||')';
        execute immediate V_sqlstr INTO v_count;
    end CS;