日期:2014-05-17  浏览次数:21020 次

初学者请教 in 查询问题
select   *   from   table1   where   myid   in(1,2,3)这个可行。

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

------解决方案--------------------
myprodure( 'myname ', 'select * from table1 where myid in(1,2,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>