【PostgreSQL】エラーを取得する(EXCEPTION)

2020年11月13日PostgreSQL構文

スポンサーリンク

エラーを取得する(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;
ALTER FUNCTION err_test()
  OWNER TO postgres;

※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;
ALTER FUNCTION err_test()
  OWNER TO postgres;

 

上の関数を使った実行例を示します。

--実行例
select * from err_test(); 
--【結果】 "SQLSTATE 『22012』 , SQLERRM 『0 による除算が行われました』"