Re: Newbie: help with FUNCTION
От
Richard Huxton
Тема
Re: Newbie: help with FUNCTION
Дата
Msg-id
421EDDE6.9040308@archonet.com
Ответ на
Newbie: help with FUNCTION (Charl Gerber)
Список
Дерево обсуждения
Newbie: help with FUNCTION Charl Gerber <charlgerber@yahoo.com>
Re: Newbie: help with FUNCTION elein@varlena.com (elein)
Re: Newbie: help with FUNCTION Rick Apichairuk <rapichai@gmail.com>
Re: Newbie: help with FUNCTION Richard Huxton <dev@archonet.com>
Charl Gerber wrote: > I'm trying to create a function that takes 1 > paramater (eg an integer) as input, then does 5 > database updates or deletes in 5 different SQL > statements and returns 5 integers (in one resultset) > indicating how many rows were affected by the various > updates/deletes. > > How do I do this? > > How can I specify the names of the 5 output colums? Why not return 5 rows instead. That way you can extend it to 6 queries easily. CREATE TYPE num_rows_affected AS ( tbl_name text, num_rows int4 ); CREATE FUNCTION do_stuff(int4) RETURNS SETOF num_rows_affected AS ' DECLARE res num_rows_affected; BEGIN -- Do query 1 here GET DIAGNOSTICS res.num_rows := ROW_COUNT; res.tbl_name := ''table1''; RETURN NEXT res; -- Do query 2 here GET DIAGNOSTICS res.num_rows := ROW_COUNT; res.tbl_name := ''table1''; RETURN NEXT res; ...etc... RETURN; END; ' LANGUAGE plpgsql; SELECT * FROM do_stuff(123); Full details in the plpgsql chapter of the manuals. None of the above is tested for syntax errors. You can use block-quoting in version 8.0 -- Richard Huxton Archonet Ltd
В списке pgsql-general по дате отправления
От: Bruce Momjian
Дата: