代码大致如下:
PRO_INDEXDATA(IN_TABLES VARCHAR2)
is
cursor A_CUR(CUR_TABLES VARCHAR2) is
SELECT TABLE_NAME
FROM ALL_TABLES
WHERE TABLE_NAME IN (CUR_TABLES);
AAA A_CUR%rowtype;
V_TABLES VARCHAR2(200);
begin
if IN_TABLES is null then
...
else
V_TABLES := '''' || REPLACE(UPPER(IN_TABLES), ',', ''',''') || ''''---前几天在论坛问别人的,意思是如果遇到aaa,bb,cc结果变成'aaa','bb','cc',但是好像这样写当游标参数有问题,结果查不出记录来,不知道怎么搞的,有谁能解决这个问题。dbms_output.put_line(V_TABLES); ----能打印的出for ..LOOP
dbms_output.put_line(1); --打印不出,查不到记录,直接跳出游标end loop
end;
------解决方案--------------------
这种情况不用转,直接用传进的IN_TABLES查询,改下游标的SQL即可
- SQL code
cursor A_CUR(CUR_TABLES VARCHAR2) is SELECT TABLE_NAME FROM ALL_TABLES WHERE instr(','||upper(CUR_TABLES)||',',','||TABLE_NAME||',')>0;