我正在编写一个简单的PL SQL过程。但是它抛出了我忽略错误的语句。我是否需要将它们称为单个变量然后插入到最终表中?请检查以下代码。
PROCEDURE EMP_MAIN IS BEGIN
FOR CUR1 IN
(SELECT STG.INT1 INT1
, STG.OPT1 OPT1
, STG.FDT1 DT1
, STG.HDR_SRC_LEAD_ID HDR_LEAD_ID
, STG.HDR_SRC_NAME HDR_SRC_NAME
FROM MAIN_EMP STG)
BEGIN IF (INT1 IS NOT NULL)
THEN
INSERT INTO EMP_FIN(
ROW_ID
, INT
, OPTION
, DATE
, TYPE
, RATING
)
VALUES
(
ROWNUM
, CUR1.INT1
, CUR1.OPT1
, CUR1.DT1
, 'Prospect'
, '1'
);
COMMIT;
END IF; END EMP_MAIN;
如果我错过了什么,请告诉我。
答案 0 :(得分:0)
此代码完全解决了这个问题,并使用Oracle [基于集合的处理引擎]来实现一次一行/一次缓慢的过程。 我建议改为:
INSERT INTO EMP_FIN (ROW_ID, INT, OPTION
, DATE
, TYPE
, RATING
)
SELECT rownum, STG.INT1 INT1
, STG.OPT1 OPT1
, STG.FDT1 DT1
, STG.HDR_SRC_LEAD_ID HDR_LEAD_ID
, STG.HDR_SRC_NAME HDR_SRC_NAME
FROM MAIN_EMP STG
WHERE INT1 IS NOT NULL;