select * from table1 where myid in(1,2,3)这个可行。现在有一个存储过程需要调用这个语句,myprodure(name vachar2,idlist varchar2),我调用该存储过程时候该怎样传这个idlist参数呢?
因为这样很明显是不行的:
exec myprocedure('myname','1,2,3');
我的myid字段是number的序列,有什么简单的办法调用这个存储过程么?

解决方案 »

  1.   

    myprodure('myname','select * from table1 where myid in(1,2,3)')
    不知道你具体的需求,根据我的理解
      

  2.   

    简单的说,怎么给这个存储过程传参数呢,myprodure(name vachar2,idlist varchar2),idlist是由客户端传入的id串。因为直接这样调用是不行的,
    exec myprocdure('myname','56,35,725')
      

  3.   

    SQL> create or replace procedure myprocdure(name varchar2,idlist varchar2) as
      2    TSQL VARCHAR(100);
      3  begin
      4  TSQL:='SELECT * FROM TABLE1 WHERE MYID IN (' || idlist || ')';
      5           execute   immediate TSQL;
      6  end;
      7  /过程已创建。SQL> exec myprocdure('myname','56,35,725');PL/SQL 过程已成功完成。SQL>