1

Temat: wyjatki

chce zrobic proceure ktora wyswietla wyjatek ma to dotyczyc dzielenia przez 0. napisalam taka procedure ale nie wiem czy ona dobrze dziala. prosze o pomoc.

CREATE OR REPLACE FUNCTION fun3(real,real)
RETURNS real
AS '
BEGIN
RETURN $1/$2;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE ''BLAD DZIELENIA PRZEZ ZERO!!!'';
RETURN 0;
END;
'LANGUAGE 'plpgsql';

SELECT * from fun3(20,5);
SELECT * from fun3(10,0);

i nie wiem czy nie powinien wyswietlic sie komunikat blad dzielenia przez zero. bo mnie wyswietla tylko 0.

2

Odp: wyjatki

A ,może powinieneś uruchomić funkcję poleceniem

SELECT  fun3(20,5);
SELECT  fun3(10,0);

bo nie zwraca ona recordsetów

3

Odp: wyjatki

no tak te wywolania daja to samo co select * from fun3(10,0)
ale mnie chodzi czy jak dziele przez zero to jak mam RAISE NOTICE ''BLAD DZIELENIA PRZEZ ZERO!!!''; to powinien wyswietlic sie ten komunikat czy poprostu 0

4

Odp: wyjatki

Nie mam teraz pod reka postgresa, ale moze tak

CREATE OR REPLACE FUNCTION fun3(real,real)
RETURNS real
AS '
DECLARE
zm integer;
BEGIN
zm:=$1/$2;
RETURN zm;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE ''BLAD DZIELENIA PRZEZ ZERO!!!'';
RETURN 0;
END;
'LANGUAGE 'plpgsql';