Mega Code Archive

 
Categories / PostgreSQL / Table
 

Reference column type through column type

postgres=# 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;  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=# CREATE FUNCTION "get_employee" (text) RETURNS text AS ' postgres'#   DECLARE postgres'#      ecity ALIAS FOR $1; postgres'#      ename employee.name%TYPE; postgres'# postgres'#   BEGIN postgres'#      SELECT INTO ename name FROM employee WHERE city = ecity; postgres'#      return ecity || '' '' || ename; postgres'#   END; postgres'# ' LANGUAGE 'plpgsql'; postgres=# postgres=# select get_employee(city) from employee;    get_employee ------------------  New York Jason  Vancouver Robert  Toronto Celia  New York Jason  Vancouver Robert  Toronto Celia  New York Jason  Vancouver Robert  Toronto Celia (9 rows) postgres=# postgres=# drop function get_employee(text); DROP FUNCTION postgres=# drop table employee; DROP TABLE postgres=# postgres=#