CREATE OR REPLACE PROCEDURE
CATCH_ERR_TEST( X IN NUMBER ) IS
Y NUMBER;
BEGIN
Y := 1 / X;
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE('0除算エラーを捕捉しました。');
END;
リスト27:Oracleで除算エラーを捕捉する場合の例
下記が実行結果です。
BEGIN
CATCH_ERR_TEST(0);
END;
0除算エラーを捕捉しました。
これをPostgreSQLで表すと下記のようになります。
CREATE OR REPLACE FUNCTION CATCH_ERR_TEST(INTEGER)
RETURNS VOID AS '
DECLARE
x ALIAS FOR $1;
y integer;
BEGIN
y := 1 / x;
RETURN;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE ''0除算エラーを捕捉しました。'';
RETURN;
END;
' LANGUAGE 'plpgsql';