有一过程,参数P1 varchar2,要传入给一个游标的where中,where col_name in (参数).请问该如何传啊?只传一个没问题,传多个时如何传?记得以前搞出来过,格式咋整搞忘记了,又不想用动态SQL,用instr又不能用上索引,请达人指导.
例:传单个值A001,用A001或者'A001'都可以.
   传多个值,无论用A001,A002还是'A001','A002'还是A001','A002都不行.

解决方案 »

  1.   

    创建过程时多定义几个传入参数能达到效果吗?
    create procedure xxx(aaa in varchar,bbb in varchar,ccc in varchar)....exec xxx('A001','A002','')
      

  2.   

    where instr( (参数),col_name)>0
      

  3.   

    可以先将参数拼出来 
    FOR N_ROW IN C_NSR LOOP
          ls_par := ls_par||N_ROW.p1
    END LOOP;
    select * from a where b in ls_par 楼主可以试试看