既存の行を別のテーブルに動的に書き込むことができるプロシージャを作成しようとしていますが、次のスニペットの行宣言と挿入ステートメントが機能しません。このエラー メッセージは、target_table.table_name の出力は問題なく機能しますが、ビューが識別されていないことを示しています。
後でブロックにさらに追加されます - 操作 (INSERT や UPDATE など) を持つ列などです。これは単なる例であり、最後の手順 (pass_reference) を使用して手順をトリガーします。
どんな助けでも大歓迎です。
CREATE OR REPLACE PROCEDURE denormalize (new_cursor sys_refcursor, target_table_name varchar)
IS
target_table user_tables%rowtype;
sql_target_table varchar(200) := 'select * from user_tables where table_name = :target_table_name';
row target_table%rowtype;
BEGIN
execute immediate sql_target_table into target_table using target_table_name;
LOOP
fetch new_cursor into row;
exit when new_cursor%notfound;
insert into target_table values row;
commit;
END LOOP;
END denormalize;
/
CREATE OR REPLACE PROCEDURE pass_reference
AS
new_cursor sys_refcursor;
BEGIN
open new_cursor for select * from sales where sales_id=1;
denormalize(new_cursor, 'NEW_SALES');
END;
/