【发布时间】:2013-10-07 23:00:53
【问题描述】:
我在创建此存储过程时遇到了问题,并且在执行时遇到了一些错误。错误包括 SQL 语句被忽略和 SQL 命令未正确结束。我认为所有的代码都很干净。
返回总记录并将其插入 TABLE1 表中的 RECORD_COUNT 变量中。
条件以查看 RECORD_COUNT 是否大于零并转储数据以清除 TABLE1 表。
判断 RECORD_COUNT 是否等于 0 的条件,以便从 EXTERNAL_TABLE 表插入到 TABLE1 表中。
请帮忙。
CREATE OR REPLACE PROCEDURE sp_INSERT
(RECORD_COUNT OUT NUMBER)
IS
BEGIN
SELECT COUNT(*)
INTO RECORD_COUNT
FROM TABLE1;
IF RECORD_COUNT > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE TABLE1'
END IF;
IF RECORD_COUNT = 0 THEN
INSERT INTO TABLE1
(
JOB_ID,
NUM_SP1,
NUM_SP2,
NUM_SP3,
NUM_SP4,
)
(SELECT JOB_ID,
NUM_SP1,
NUM_SP2,
NUM_SP3,
NUM_SP4,
FROM EXTERNAL_TABLE)
COMMIT;
END IF;
END;
【问题讨论】:
-
您好,错误消息应该会有所帮助 - 它们会为您提供行号。您缺少许多分号,TRUNCATE 是 DDL,因此不能在动态 SQL 之外的 PL/SQL 中执行。
标签: stored-procedures plsql oracle11g syntax-error