Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handling EXCEPTION and return result from function

This is my code

CREATE OR REPLACE FUNCTION test_excep (arg INTEGER) RETURNS INTEGER 
AS $$
    DECLARE res INTEGER;
    BEGIN
        res := 100 / arg;

        BEGIN
            EXCEPTION
            WHEN division_by_zero 
            THEN  RETURN 999;
        END;


        RETURN res;
    END;



$$
LANGUAGE plpgsql;

That is, I need returned "999", if happened division by zero, but this: SELECT test_excep(0)

returns error: division by zero CONTEXT: PL/pgSQL function test_excep(integer) line 4 at assignment

What is wrong in my code?

like image 559
Oto Shavadze Avatar asked Dec 20 '22 04:12

Oto Shavadze


1 Answers

The EXCEPTION clause needs to be in the same block as the exception.

For instance:

CREATE OR REPLACE FUNCTION test_excep (arg integer)
  RETURNS integer
AS
$func$
DECLARE
   res INTEGER;
BEGIN

res := 100 / arg;

RETURN res;

EXCEPTION
    WHEN division_by_zero 
    THEN  RETURN 999;

END
$func$
LANGUAGE plpgsql;
like image 50
Erwin Brandstetter Avatar answered Dec 30 '22 09:12

Erwin Brandstetter