日期:2014-05-16  浏览次数:20745 次

遇到个游标奇怪的问题,请高手来帮忙
代码大致如下:
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;