存储过程传varchar2参数,达到目的如下。执行语句:
     insert into tabl1(f1,f2,f3) 
          select f1,f2,f3          
from table2          
where f1 in (10,20,30,40,50,60,70,80,90)以上找到记录,f1为varchar2类型10,20,30,40,50,60,70,80,90想通过一个变量来实现。insert into tabl1(f1,f2,f3) 
          select f1,f2,f3          
from table2          
where f1 in (varchar2变量)
但是这样记录找不到,我想,oracle可能是把varchar2变量作为一个值来in了,请问,我该怎么做?

解决方案 »

  1.   

    insert into tabl1(f1,f2,f3)  
    select 
        f1,f2,f3           
    from 
        table2           
    where 
        ','||varchar2变量||',' like '%,'||to_char(f1)||',%' 
      

  2.   

    好像是个办法,
    可不可以把insert into tabl1(f1,f2,f3)  
    select f1,f2,f3           
    from table2           
    where f1 in (varchar2变量) varchar2变量转义掉?有没有这种方法?
      

  3.   

    那就用动态SQL语句,先把 varchar2变量 与SQL字符串拼接在一起,然后提交给EXECUTE执行。
      

  4.   

    楼上的方法也是可以,但我的SQL实在太长了,可读性不好。