Re: Instaltiating an ARRAY within a function
От | Albe Laurenz |
---|---|
Тема | Re: Instaltiating an ARRAY within a function |
Дата | |
Msg-id | D960CB61B694CF459DCFB4B0128514C2AE0A1B@exadv11.host.magwien.gv.at обсуждение исходный текст |
Ответ на | Instaltiating an ARRAY within a function ("Abraham, Danny" <danny_abraham@bmc.com>) |
Список | pgsql-general |
Danny Abraham wrote: > =========================================== > > CREATE OR REPLACE FUNCTION arr( inout x varchar[] ) > AS > $Z$ > DECLARE > i integer; > BEGIN > select ARRAY['Danny','Eissam','Moshe'] into x; > end; > $Z$ LANGUAGE 'plpgsql' VOLATILE; > > =========================================== > > CREATE OR REPLACE FUNCTION callarr() > returns integer > AS > $Z$ > DECLARE > x varchar[6]; > BEGIN > perform arr(x); > RAISE NOTICE 'x[1]=%',x[1]; > return 0; > end; > $Z$ LANGUAGE 'plpgsql' VOLATILE; > > =========================================== > > select callarr(); > NOTICE: x[1]=<NULL> ??? Should have been DANNY > > > Should it work? Not the way you wrote it. You are confused by output parameters which do not work the way one might expect. They are just a simple syntax for composite return types. CREATE FUNCTION arr(INOUT x varchar[]) is synonymous to CREATE FUNCTION arr(x varchar[]) RETURNS varchar[] So your example should work if you replace PERFORM arr(x); with x := arr(x); Yours, Laurenz Albe
В списке pgsql-general по дате отправления: