我写了一个函数,有一个参数pkids,用来传递数据库表的多个主键(用,隔开)。
函数里有一个游标写的是select * from table_name where uid in (pkids);
我传一个id时游标有结果,但我传1,2,3,4这样的多个id时,游标就查不出结果了,请问是怎么搞的啊?
函数里有一个游标写的是select * from table_name where uid in (pkids);
我传一个id时游标有结果,但我传1,2,3,4这样的多个id时,游标就查不出结果了,请问是怎么搞的啊?
dbms_output.put_line(sql);估计是拼接的时候没注意'',
你的id字段是varchar2类型吧!
可以这样传吗?
进入的值用,隔开,前后还要加,(,a1,a2,a3,a4,)
where instr(pkids,','+uid+',')>0
create or replace function export_sql_to_file(pkids varchar2) return number
AS
CURSOR c_role IS
select 'INSERT INTO ' || 'tb_role' || '(role_id, role_desc) VALUES(' || role_id || ',' || chr(39) || role_desc || chr(39) || ');' as sql_export from tb_role where role_id in (pkids);
begin
FOR csr IN c_role
LOOP
IF c_role%FOUND THEN
dbms_output.put_line(csr.sql_export);
END IF;
END LOOP;
return (1);
end export_sql_to_file;