天天看點

遊标中嵌套遊标 oracle,Oracle嵌套遊标

我想從列中存在的模式中的每個表中擷取名為“YMDH”的列中的不同日期。我想我需要使用嵌套遊标(我以前沒有做過的),并提出了以下代碼:

CREATE OR REPLACE PROCEDURE DistinctDates AS

sql_statement1 varchar2(200);

sql_statement2 varchar2(200);

results varchar2(15);

ColumnExist integer;

BEGIN

for cursor_rec in (SELECT * FROM user_objects WHERE object_type='TABLE'

AND object_name NOT LIKE 'TM%') loop

sql_statement1 := 'select count (*) from user_tab_columns where table_name=' || '''' || cursor_rec.object_name || '''' || ' and column_name=' || '''' ||'YMDH' || '''';

execute immediate sql_statement1 into ColumnExist;

if ColumnExist = 1 then

for inner_cursor_rec in (select distinct(ymdh) from cursor_rec.object_name) loop

null;

end loop;

end if;

end loop;

END DistinctDates;SQL Developer正在抱怨内部遊标的select語句。錯誤消息是:

Error(18,32): PL/SQL: SQL Statement ignored

Error(18,70): PL/SQL: ORA-00942: table or view does not exist

是以它不會識别對外部遊标的引用。我如何将表名(這是cursor_rec.object_name)傳遞給内部遊标?