Postgresql
在 for 循環中使用異常時的語法錯誤
我正在嘗試在 postgresql 上創建以下過程
CREATE PROCEDURE run_all_scheduled_tasks() LANGUAGE plpgsql AS $$ DECLARE rec record; BEGIN FOR rec IN SELECT * FROM some_table LOOP -- Statement 1..2..3..4 EXCEPTION WHEN others THEN RAISE NOTICE 'Error Occured! Code: %, Messege:%', sqlstate, sqlerrm; ROLLBACK; COMMIT; END LOOP; END; $$;
我收到以下錯誤:
錯誤:“異常”處或附近的語法錯誤第
12 行:異常
如果我將異常塊移到 for 循環之外,它可以正常工作。
我想要實現的是,對於循環的一次迭代,要麼執行 1..4 中的所有語句,要麼不執行任何語句。如果發生錯誤,我仍然希望保留上一次迭代之前所做的更改,然後通過簡單地發出錯誤通知來繼續下一次迭代。
是什麼導致了這個錯誤?
如評論中所述,我缺少的是另一個
BEGIN
包含異常的內容。更新程式碼:
CREATE PROCEDURE run_all_scheduled_tasks() LANGUAGE plpgsql AS $$ DECLARE rec record; BEGIN FOR rec IN SELECT * FROM some_table LOOP BEGIN -- Statement 1..2..3..4 EXCEPTION WHEN others THEN RAISE NOTICE 'Error Occured! Code: %, Messege:%', sqlstate, sqlerrm; ROLLBACK; END; COMMIT; END LOOP; END; $$;