【PostgreSQL】エラーを取得する(EXCEPTION)
エラーを取得する(EXCEPTION)構文
エラーが起こった時の処理を記述するには、『EXCEPTION』で記載します。
CREATE OR REPLACE FUNCTION err_test()
RETURNS character varying AS
$BODY$
declare
--省略
BEGIN
--処理がここに書かれる(省略)
EXCEPTION --上の「処理」でエラーになった時、この下の「EXCEPTION」の処理が動きます
WHEN OTHERS THEN
--エラー時の処理をここに書きます
--『SQLSTATE」にエラーコード 、 『SQLERRM』にエラーメッセージが格納されます
return SQLSTATE || SQLERRM ;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
※PostgreSQL12で動作確認済み
実行例
関数「err_test()」を用意しましたので参考にして下さい。
エラーを発生させ、エラーコードとエラーメッセージが返るようになっています。
CREATE OR REPLACE FUNCTION err_test()
RETURNS character varying AS
$BODY$
declare
n_result numeric;
BEGIN
n_result = 3/0; --ここで0で割り、わざとエラーを発生させる
EXCEPTION
WHEN OTHERS THEN
-- エラーコードとエラーメッセージを返す
return 'SQLSTATE 『' || SQLSTATE || '』 , ' || 'SQLERRM 『' || SQLERRM || '』';
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
上の関数を使った実行例を示します。
--実行例
select * from err_test();
--【結果】 "SQLSTATE 『22012』 , SQLERRM 『0 による除算が行われました』"
あわせて読みたい
この関数もEXCEPTIONを利用している関数です。使い方の例として参考になれば幸いです。