【发布时间】:2016-03-07 02:27:23
【问题描述】:
我正在尝试创建一个数据库过程来截断表,但如果该截断失败,请稍等片刻并重新运行截断。我无法锁定表或复制表然后删除旧表,所以这种更困难的方法是我唯一的选择。
我的以下代码收到 PLS-00382 错误,并为这个问题感到困惑:
CREATE OR REPLACE PROCEDURE TRUNCATE_ROUTING_CACHE AS
runcount NUMBER := 0;
status varchar2(10);
BEGIN
EXECUTE IMMEDIATE 'truncate table routing_cache';
IF VALUE_ERROR THEN
status := 'FAIL';
WHILE status = 'FAIL' AND runcount < 3
LOOP
sys.dbms_lock.sleep(120);
EXECUTE IMMEDIATE 'truncate table routing_cache';
IF VALUE_ERROR THEN
runcount := runcount + 1;
ELSIF status = 'FAIL' THEN
status := 'SUCCESS';
END IF;
END LOOP;
ELSIF runcount = 0 THEN
status := 'SUCCESS';
runcount := runcount + 1;
END IF;
END;
【问题讨论】:
标签: oracle stored-procedures plsql oracle-sqldeveloper