我正在尝试创建一个过程,该过程允许我动态地将现有行写入另一个表,但以下代码段中的行声明和插入语句不起作用。错误消息表明,尽管输出 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;
/