我写了一个包,在包里面我定义了一个varchar的变量 s_id,
select yijiid from mz_yiji1 where yijiid in s_id;
s_id= ('1026962305','1026962306','1026962307','1026962308','1026962304')
但是查询的时候查询不到内容
如果我把这个字符串select yijiid from mz_yiji1 where yijiid in ('1026962305','1026962306','1026962307','1026962308','1026962304'),查询有值。那位大神能告诉我为什么

解决方案 »

  1.   

    过程里不能这么直接查询吧, select yijiid from mz_yiji1 where yijiid in s_id;改为select into
    另外可以试试动态语句:
    s_id= ('1026962305','1026962306','1026962307','1026962308','1026962304') ;
    v_sql  :=  ‘ select yijiid from mz_yiji1 where yijiid in ’||s_id ;
    execute immediate v_sql into xxx ;
      

  2.   

    -- 这个写法会出错的,
    s_id= ('1026962305','1026962306','1026962307','1026962308','1026962304')如果是多个值,必须写成这样的,加一个 any 
    s_id= any  ('1026962305','1026962306','1026962307','1026962308','1026962304')
    -- 或者 
    s_id in  ('1026962305','1026962306','1026962307','1026962308','1026962304')