我想從該列存在的模式中的每個表中獲取名爲「YMDH」的列中的不同日期。我想,我需要使用嵌套的遊標(這是我以前沒做過的),並用下面的代碼上來:Oracle嵌套遊標
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語句。該錯誤消息是:
錯誤(18,32):PL/SQL:SQL語句忽略 錯誤(18,70):PL/SQL:ORA-00942:表或視圖不存在
所以它不識別對外部遊標的引用。我如何將表名(這是cursor_rec.object_name)傳遞給內部遊標?
你的第二個查詢也應該是動態的; 'cursor_rec.object_name'是一個_string_。這也是一個SQL注入-y。 – Ben
單獨爲「SQL Injection-y」+1 ... – Ollie