その列が存在するスキーマの各テーブルから、「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 は、内部カーソルの選択ステートメントについて不平を言っています。エラーメッセージは次のとおりです。
エラー (18,32): PL/SQL: SQL ステートメントは無視されました エラー (18,70): PL/SQL: ORA-00942: テーブルまたはビューが存在しません
したがって、外側のカーソルへの参照を認識していません。テーブル名 (cursor_rec.object_name) を内部カーソルに渡すにはどうすればよいですか?