Using the %TYPE attribute : Type « Postgre SQL « PostgreSQL






Using the %TYPE attribute


postgres=#
postgres=#
postgres=#
postgres=# CREATE TABLE "authors" (
postgres(#      "id" integer NOT NULL,
postgres(#      "last_name" text,
postgres(#      "first_name" text,
postgres(#      Constraint "authors_pkey" Primary Key ("id")
postgres(# );
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "authors_pkey" for table "authors"
CREATE TABLE
postgres=#
postgres=#
postgres=# insert into authors values (1111,  'Martin',       'Jason');
INSERT 0 1
postgres=# insert into authors values (1212,  'Worsley',      'Robert');
INSERT 0 1
postgres=# insert into authors values (15990, 'Mathews',      'John');
INSERT 0 1
postgres=# insert into authors values (25041, 'Smith',       'Williams');
INSERT 0 1
postgres=# insert into authors values (16,    'Alcott',       'May');
INSERT 0 1
postgres=# insert into authors values (4156,  'King',         'Stephen');
INSERT 0 1
postgres=# insert into authors values (1866,  'Herbert',      'Margaret');
INSERT 0 1
postgres=# insert into authors values (1644,  'Hogarth',      'Celia');
INSERT 0 1
postgres=# insert into authors values (2031,  'Brown',        'Wise');
INSERT 0 1
postgres=# insert into authors values (115,   'Poe',          'Allen');
INSERT 0 1
postgres=# insert into authors values (7805,  'Lutz',         'Mark');
INSERT 0 1
postgres=# insert into authors values (7806,  'Rice',         'Tom');
INSERT 0 1
postgres=# insert into authors values (1533,  'Black',        'Chris');
INSERT 0 1
postgres=# insert into authors values (1717,  'Brite',        'Linda');
INSERT 0 1
postgres=# insert into authors values (2112,  'Larry',        'Edward');
INSERT 0 1
postgres=# insert into authors values (2001,  'Clarke',       'Alison');
INSERT 0 1
postgres=# insert into authors values (1213,  'Green',        'Mary');
INSERT 0 1
postgres=#
postgres=# select * from authors;
  id   | last_name | first_name
-------+-----------+------------
  1111 | Martin    | Jason
  1212 | Worsley   | Robert
 15990 | Mathews   | John
 25041 | Smith     | Williams
    16 | Alcott    | May
  4156 | King      | Stephen
  1866 | Herbert   | Margaret
  1644 | Hogarth   | Celia
  2031 | Brown     | Wise
   115 | Poe       | Allen
  7805 | Lutz      | Mark
  7806 | Rice      | Tom
  1533 | Black     | Chris
  1717 | Brite     | Linda
  2112 | Larry     | Edward
  2001 | Clarke    | Alison
  1213 | Green     | Mary
(17 rows)

postgres=#
postgres=# drop function get_author(text);
DROP FUNCTION
postgres=#
postgres=# -- Using the %TYPE attribute
postgres=#
postgres=# CREATE FUNCTION get_author (text) RETURNS text AS '
postgres'#   DECLARE
postgres'#       -- Declare an alias for the function argument,
postgres'#       -- which should be the first name of an author.
postgres'#      f_name ALIAS FOR $1;
postgres'#      l_name authors.last_name%TYPE;
postgres'#   BEGIN
postgres'#      SELECT INTO l_name last_name FROM authors WHERE first_name = f_name;
postgres'#
postgres'#      return f_name || '' '' || l_name;
postgres'#
postgres'#   END;
postgres'# ' LANGUAGE 'plpgsql';
CREATE FUNCTION
postgres=#
postgres=# -- Results of the get_author(?) function
postgres=#
postgres=# SELECT get_author('Jason');
  get_author
--------------
 Jason Martin
(1 row)

postgres=#
postgres=# drop table authors;
DROP TABLE
postgres=#
postgres=#
           
       








Related examples in the same category

1.Declaration of Composite Types
2.Create data type
3.Row function with defined data type
4.Create data type and use it as a column data type