Database Reference
In-Depth Information
Returning records
If multiple rows of data are needed to be returned, a similar function returning a set
is achieved by adding
RETURNS SETOF RECORD
. This technique can only be used
with functions using
INOUT
or
OUT
arguments.
CREATE FUNCTION permutations(INOUT a int,
INOUT b int,
INOUT c int)
RETURNS SETOF RECORD
AS $$
BEGIN
RETURN NEXT;
SELECT b,c INTO c,b; RETURN NEXT;
SELECT a,b INTO b,a; RETURN NEXT;
SELECT b,c INTO c,b; RETURN NEXT;
SELECT a,b INTO b,a; RETURN NEXT;
SELECT b,c INTO c,b; RETURN NEXT;
END;
$$ LANGUAGE plpgsql;
Running the
permutations
function returns the six rows we would expect:
hannu=# SELECT * FROM permutations(1, 2, 3);
-[ RECORD 1 ]
a | 1
b | 2
c | 3
-[ RECORD 2 ]
a | 1
b | 3
c | 2
-[ RECORD 3 ]
a | 3
b | 1
c | 2