[英]PL/SQL Dynamic Table Names
我对Oracle还是很陌生,因此不能完全确定是否有可能,或者如果我采用错误的方式进行操作,但是这里...
我正在修复的旧的供稿器脚本的一部分正在遍历〜20个表(可以随时更改)以填充相关的登台表。 这部分目前非常基础:
...
INSERT INTO staging_tbl_1(
SELECT *
FROM source_tbl_1
);
INSERT INTO staging_tbl_2(
SELECT *
FROM source_tbl_2
);
...
源数据库中的某些字段具有不同的约束等,这意味着它会不时地抛出异常,并且供稿器将停止。 我希望做的是在现有的Feeder程序包中创建一个过程,以在插入记录之前遍历每条记录中的每一行,并将其简单地包装在异常块中。 这样就可以记录它,而不会导致进纸器停止。
本质上,我正在追逐这样的东西:
BEGIN procedure_x(source_record, staging_record)
-- Perform validation to ensure records exit
-- Loop through all record rows
FOR row IN (SELECT * FROM source_record) LOOP
-- Wrap in exception block
-- Insert into staging record
-- Log exception if it occurs
END LOOP;
END
我尝试了ref游标,但是为了使它们工作,我还需要提前了解行类型(根据我的有限理解)。 我也尝试立即执行,但是我找不到合适的方式来循环执行。 还有其他解决方法吗?
额外:
我意识到我们确实应该解决问题的根源,而不是像这样去解决,不幸的是,这远远超出了我的影响范围。
可以执行此操作而无需执行单独的过程,而只需将所有表引用包装在一个循环中即可,但是我想把它留作最后的选择。
Oracle具有记录DML错误的功能。 与单个SQL语句一起使用。 不要一行一行地进行,以使您的进程爬行。
http://docs.oracle.com/cd/B19306_01/server.102/b14231/tables.htm#ADMIN10261
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.