2017-02-14 9 views
1

私はC#コードでエラーコードを使用できるので、私はRAISE EXCEPTION '...' USING ERRCODE='....'を私のコードでかなり使っています。しかし、私は今のように私のplpgsqlコードでこれを使用したい:ユーザー定義の例外を発生させてキャッチ

BEGIN 
    ... 
    RAISE EXCEPTION 'Something is wrong' USING ERRCODE='S0001'; 

EXCEPTION WHEN 'S0001' THEN 
    -- Handle code S0001 
END; 

しかし、それは動作しません。 plpgsqlで自分のスローされた例外を捕捉して処理する方法はありますか?

答えて

2

あなたの例外処理句は次のようになります。

EXCEPTION 
    WHEN SQLSTATE 'S0001' 
    THEN 
     ... 
END; 
3

使用sqlstate、例えば:

drop function if exists test(); 
create or replace function test() 
returns int language plpgsql as $$ 
begin 
    raise exception using errcode = 50001; 
    return 0; 
    exception when sqlstate '50001' then 
     return sqlstate; 
end $$; 

select test(); 

test 
------- 
50001 
(1 row) 
関連する問題