【发布时间】:2016-05-06 04:11:06
【问题描述】:
我有一个过程,它从一个表中选择数据并插入到另一个表中。下面是过程。
CREATE OR REPLACE PROCEDURE "CUSTOMER_INCREMENTAL" (
IS
BEGIN
INSERT INTO NDB_AML_CUSTOMER
(ID, TITLE,...)
SELECT ID, TITLE,...
FROM NDB_CUSTOMER_NEW
WHERE DATE_TIME > (SELECT RUN_DATE FROM CHECK_POINT WHERE TABLE_NAME = 'NDB_CUSTOMER_NEW');
UPDATE CHECK_POINT SET RUN_DATE = SYSDATE WHERE TABLE_NAME = 'NDB_CUSTOMER_NEW';
COMMIT;
END;
/
在插入发生在 12:41:08 的情况下,它将选择该点存在的源表中的所有记录。如果更新语句在 12:41:10 执行,则下一次运行将从该时间开始。并且使用 12:41:09 的 DATE_TIME 添加的任何记录都不会在下一次运行中被选中。
我研究了For Update 和Current of,但我不知道在哪里使用它。有什么建议吗?
【问题讨论】: