Pass in a whole row : Function Parameter « Store Procedure Function « PostgreSQL






Pass in a whole row


postgres=#
postgres=# CREATE TABLE employee (
postgres(#     ID         int,
postgres(#     name       varchar(10),
postgres(#     salary     real,
postgres(#     start_date date,
postgres(#     city       varchar(10),
postgres(#     region     char(1)
postgres(# );
CREATE TABLE
postgres=#
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (1,  'Jason', 40420,  '02/01/94', 'New York', 'W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (2,  'Robert',14420,  '01/02/95', 'Vancouver','N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (3,  'Celia', 24020,  '12/03/96', 'Toronto',  'W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (4,  'Linda', 40620,  '11/04/97', 'New York', 'N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (5,  'David', 80026,  '10/05/98', 'Vancouver','W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (6,  'James', 70060,  '09/06/99', 'Toronto',  'N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (7,  'Alison',90620,  '08/07/00', 'New York', 'W');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (8,  'Chris', 26020,  '07/08/01', 'Vancouver','N');
INSERT 0 1
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)
postgres-#               values (9,  'Mary',  60020,  '06/09/02', 'Toronto',  'W');
INSERT 0 1
postgres=#
postgres=# select * from employee;
                         REATE
 id |  name  | salary | start_date |   city    | region
----+--------+--------+------------+-----------+--------
  1 | Jason  |  40420 | 1994-02-01 | New York  | W
  2 | Robert |  14420 | 1995-01-02 | Vancouver | N
  3 | Celia  |  24020 | 1996-12-03 | Toronto   | W
  4 | Linda  |  40620 | 1997-11-04 | New York  | N
  5 | David  |  80026 | 1998-10-05 | Vancouver | W
  6 | James  |  70060 | 1999-09-06 | Toronto   | N
  7 | Alison |  90620 | 2000-08-07 | New York  | W
  8 | Chris  |  26020 | 2001-07-08 | Vancouver | N
  9 | Mary   |  60020 | 2002-06-09 | Toronto   | W
(9 rows)

postgres=#
postgres=#
postgres=# CREATE FUNCTION concat_selected_fields(in_t employee) RETURNS text AS $$
postgres$# BEGIN
postgres$#    RETURN in_t.ID || in_t.name || in_t.city || in_t.region;
postgres$# END;
postgres$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
postgres=#
postgres=# select concat_selected_fields(employee.*) from employee;
         REATE
 concat_selected_fields
------------------------
 1JasonNew YorkW
 2RobertVancouverN
 3CeliaTorontoW
 4LindaNew YorkN
 5DavidVancouverW
 6JamesTorontoN
 7AlisonNew YorkW
 8ChrisVancouverN
 9MaryTorontoW
(9 rows)

postgres=#
postgres=#
postgres=# drop function concat_selected_fields(in_t employee);
DROP FUNCTION
postgres=# drop table employee;
DROP TABLE
postgres=#
postgres=#
           
       








Related examples in the same category

1.Here the $1 references the value of the first function argument whenever the function is invoked
2.Pass constant to function
3.OUT parameter
4.Output parameters are most useful when returning multiple values
5.Real number parameter
6.Two out parameters
7.'Anyelement' parameter
8.Use defined data type as the function parameter