こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

postgresのストアドファンクションでエラーの

postgresのストアドファンクションでエラーの拾い方を教えてください。


insertして重複したらアップデートに切り替えるというサンプルをよく見かけます。


DECLARE
BEGIN
insert文
RETURN TRUE;
EXCEPTION WHEN unique_violation THEN
update文
END;


それと同じノリで、何かしらのエラーがあった時に、
『RETURN FALSE;』するか、もしくはエラーコードをそのまま拾って返すというようなサンプルが欲しいです。

DECLARE
BEGIN
何かしらのSQL
RETURN TRUE;
EXCEPTION WHEN すべてのエラー THEN
RETURN FALSE;
END;



DECLARE
BEGIN
何かしらのSQL
RETURN TRUE;
EXCEPTION WHEN すべてのエラー THEN
RETURN エラーコード;
END;

投稿日時 - 2017-03-06 18:14:29

QNo.9301892

すぐに回答ほしいです

質問者が選んだベストアンサー

こんな感じで処理出来ると思います。

EXCEPTION
WHEN OTHERS THEN
SELECT SQLSTATE || ':' || SQLERRM INTO V_STATUS;
RETURN V_STATUS;

投稿日時 - 2017-03-10 19:21:38

お礼

有難うございます。

SQLSTATEがコードでSQLERRMがメッセージですね。

『EXCEPTION』の下に複数の『WHEN』を切れるようですね。

EXCEPTION
WHEN unique_violation THEN
処理
RETURN;

WHEN others THEN
処理
RETURN;

投稿日時 - 2017-03-15 14:41:54

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問