CREATE OR REPLACE FUNCTION data.first()
AS $BODY$
DECLARE
res numeric;
BEGIN
PERFORM data.second(5,3,4);
IF(res > 10)THEN
something
ELSEIF(res < 10)THEN
something else
END IF
END;
$BODY$;
=========================================
CREATE OR REPLACE FUNCTION data.second( a numeric, b numeric, c numeric OUT res numeric ) RETURNS numeric AS $BODY$ BEGIN res = a + b; END; $BODY$;
How do I use res in the parent function?
Advertisement
Answer
don’t specify both OUT and function returns:
t=# CREATE OR REPLACE FUNCTION data.second( a numeric, b numeric, c numeric, OUT res numeric ) AS $BODY$ DECLARE BEGIN res = a + b; END; $BODY$ language plpgsql; CREATE FUNCTION
if you want to use the return of function ,use select into VAR, perform will just execute function discarding its output:
t=# CREATE OR REPLACE FUNCTION data.first() returns text AS $BODY$ DECLARE res numeric; BEGIN SELECT data.second(5,3,4) INTO res; IF(res > 5)THEN raise info 'second returned %',res; END IF; RETURN 'here is the return'; END; $BODY$ language plpgsql; CREATE FUNCTION
finaly:
t=# select * from data.first();
INFO: second returned 8
first
--------------------
here is the return
(1 row)