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

2020年6月21日

スポンサーリンク

構文

エラーが起こった時の処理を記述するには、『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; --ここでわざとエラーを発生させる

	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 による除算が行われました』"