LZ你让sWorkerID='2,6,8'不就可以了
你那样传进去的是
Select * from UserInfo
    Where  WorkID In ((2,6,8));

解决方案 »

  1.   

    sWorkerID := '2,6,8';
    Select * from UserInfo Where  WorkID In (sWorkerID);
    -----------------------------------------------------
    如果是数字型,这么写肯定会出错的,最好是用动态SQL写SQL> DECLARE
      2  sWorkerID  VARCHAR2(200);
      3  strsql VARCHAR2(2000);
      4  cnt NUMBER;
      5  BEGIN
      6  sWorkerID := '7934,7902,7876';
      7  strsql := 'Select count(*) from emp Where  empno In (' || sWorkerID || ')';
      8  EXECUTE IMMEDIATE strsql INTO cnt;
      9  
     10  dbms_output.put_line(cnt);
     11  
     12  END test;
     13  /PL/SQL procedure successfully completed
      

  2.   

    我知道,兄弟,不是这个问题,之前我已经试过。 
    WorkID In (2,6,8); IN 子句后好像不能用变量
      

  3.   

    duanzilin(寻) 的方法应该没问题,先写成一字符串,再执行
    strsql:='Select count(*) from UserInfo Where WorkID In ' || sWorkerID;
      

  4.   

    我知道,兄弟,不是这个问题,之前我已经试过。 
    WorkID In (2,6,8); IN 子句后好像不能用变量
    -----------------------------------------------不是IN 子句后不能用变量,而是静态sql中变量只能作为1个值,sWorkerID := '2,6,8'时会对'2,6,8'做隐式类型转换而出错,不是把2,6,8作为3个值使用,试试 sWorkerID := '8'就不会出错了,用动态sql就没问题了