declare
cnt number;
begin
select count(*)
into cnt
FROM employee;
IF cnt = 0 THEN
DELETE employee;
COMMIT;
EXCEPTION
WHEN others THEN
log_error_local(k_sub_module, l_step||' '||sqlerrm);
raise;
END IF;
end
出現如下語法錯誤.. 錯誤(188,13):PLS-00103:在預期以下情況之一時遇到符號“EXCEPTION”:( begin case declare else elsif end exit for goto if loop mod null pragma raise return select update while with << continue 關閉當前洗掉獲取鎖插入打開回滾保存點設定 sql 執行提交 forall 合并管道清除
uj5u.com熱心網友回復:
IF .. THEN要解決您的語法問題,您可以將陳述句的內容包裝在BEGIN/END塊中:
DECLARE
cnt number;
BEGIN
select count(*)
into cnt
FROM employee;
IF cnt = 0 THEN
BEGIN
DELETE FROM employee;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
log_error_local(k_sub_module, l_step||' '||sqlerrm);
raise;
END;
END IF;
END;
/
注意:該DELETE陳述句缺少FROM關鍵字,并且您似乎沒有宣告k_sub_moduleorl_step變數。
或者,由于您正在重新引發例外并且無論如何都會停止執行,因此請IF在主塊中的陳述句之外捕獲例外:
DECLARE
cnt number;
BEGIN
select count(*)
into cnt
FROM employee;
IF cnt = 0 THEN
DELETE FROM employee;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
log_error_local(k_sub_module, l_step||' '||sqlerrm);
raise;
END;
/
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/430050.html
上一篇:使用json更新列值
