条件 PL SQL 过程不起作用
Posted
技术标签:
【中文标题】条件 PL SQL 过程不起作用【英文标题】:Conditional PL SQL Procedure not working 【发布时间】:2017-05-11 13:59:44 【问题描述】:我正在编写一个简单的 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;
如果我遗漏了什么,请告诉我。
【问题讨论】:
一个提示:首先创建一个更简单的过程,检查CREATE PROCEDURE
的工作原理,然后,当您能够创建一个只执行null;
的过程时,尝试添加一些代码。
您缺少LOOP...END LOOP
。 FOR CUR1 IN (...) LOOP <statements> END LOOP;
【参考方案1】:
这段代码完全错误地解决了这个问题,并使用 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;
【讨论】:
以上是关于条件 PL SQL 过程不起作用的主要内容,如果未能解决你的问题,请参考以下文章