<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=PostgreSQL%2FStore_Procedure_Function%2FFunction_Parameter</id>
		<title>PostgreSQL/Store Procedure Function/Function Parameter - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=PostgreSQL%2FStore_Procedure_Function%2FFunction_Parameter"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=PostgreSQL/Store_Procedure_Function/Function_Parameter&amp;action=history"/>
		<updated>2026-04-05T12:08:08Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=PostgreSQL/Store_Procedure_Function/Function_Parameter&amp;diff=5028&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=PostgreSQL/Store_Procedure_Function/Function_Parameter&amp;diff=5028&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=PostgreSQL/Store_Procedure_Function/Function_Parameter&amp;diff=5029&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=PostgreSQL/Store_Procedure_Function/Function_Parameter&amp;diff=5029&amp;oldid=prev"/>
				<updated>2010-05-26T10:14:38Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==&amp;quot;Anyelement&amp;quot; parameter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION is_greater(anyelement, anyelement) RETURNS boolean AS $$&lt;br /&gt;
postgres$#    SELECT $1 &amp;gt; $2;&lt;br /&gt;
postgres$# $$ LANGUAGE SQL;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# SELECT is_greater(1, 2);&lt;br /&gt;
   REATE&lt;br /&gt;
 is_greater&lt;br /&gt;
------------&lt;br /&gt;
 f&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function is_greater(anyelement, anyelement);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Here the $1 references the value of the first function argument whenever the function is invoked==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE TABLE employee (&lt;br /&gt;
postgres(#     ID         int,&lt;br /&gt;
postgres(#     name       varchar(10),&lt;br /&gt;
postgres(#     salary     real,&lt;br /&gt;
postgres(#     start_date date,&lt;br /&gt;
postgres(#     city       varchar(10),&lt;br /&gt;
postgres(#     region     char(1)&lt;br /&gt;
postgres(# );&lt;br /&gt;
CREATE TABLE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (1,  &amp;quot;Jason&amp;quot;, 40420,  &amp;quot;02/01/94&amp;quot;, &amp;quot;New York&amp;quot;, &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (2,  &amp;quot;Robert&amp;quot;,14420,  &amp;quot;01/02/95&amp;quot;, &amp;quot;Vancouver&amp;quot;,&amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (3,  &amp;quot;Celia&amp;quot;, 24020,  &amp;quot;12/03/96&amp;quot;, &amp;quot;Toronto&amp;quot;,  &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (4,  &amp;quot;Linda&amp;quot;, 40620,  &amp;quot;11/04/97&amp;quot;, &amp;quot;New York&amp;quot;, &amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (5,  &amp;quot;David&amp;quot;, 80026,  &amp;quot;10/05/98&amp;quot;, &amp;quot;Vancouver&amp;quot;,&amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (6,  &amp;quot;James&amp;quot;, 70060,  &amp;quot;09/06/99&amp;quot;, &amp;quot;Toronto&amp;quot;,  &amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (7,  &amp;quot;Alison&amp;quot;,90620,  &amp;quot;08/07/00&amp;quot;, &amp;quot;New York&amp;quot;, &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (8,  &amp;quot;Chris&amp;quot;, 26020,  &amp;quot;07/08/01&amp;quot;, &amp;quot;Vancouver&amp;quot;,&amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (9,  &amp;quot;Mary&amp;quot;,  60020,  &amp;quot;06/09/02&amp;quot;, &amp;quot;Toronto&amp;quot;,  &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select * from employee;&lt;br /&gt;
 id |  name  | salary | start_date |   city    | region&lt;br /&gt;
----+--------+--------+------------+-----------+--------&lt;br /&gt;
  1 | Jason  |  40420 | 1994-02-01 | New York  | W&lt;br /&gt;
  2 | Robert |  14420 | 1995-01-02 | Vancouver | N&lt;br /&gt;
  3 | Celia  |  24020 | 1996-12-03 | Toronto   | W&lt;br /&gt;
  4 | Linda  |  40620 | 1997-11-04 | New York  | N&lt;br /&gt;
  5 | David  |  80026 | 1998-10-05 | Vancouver | W&lt;br /&gt;
  6 | James  |  70060 | 1999-09-06 | Toronto   | N&lt;br /&gt;
  7 | Alison |  90620 | 2000-08-07 | New York  | W&lt;br /&gt;
  8 | Chris  |  26020 | 2001-07-08 | Vancouver | N&lt;br /&gt;
  9 | Mary   |  60020 | 2002-06-09 | Toronto   | W&lt;br /&gt;
(9 rows)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION myFunction(text) RETURNS employee&lt;br /&gt;
postgres-#    AS $$ SELECT * FROM employee WHERE name = $1 $$&lt;br /&gt;
postgres-#    LANGUAGE SQL;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# -- Here the $1 references the value of the first function argument whenever the function is invoked.&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select * from myFunction(&amp;quot;James&amp;quot;);&lt;br /&gt;
 id | name  | salary | start_date |  city   | region&lt;br /&gt;
----+-------+--------+------------+---------+--------&lt;br /&gt;
  6 | James |  70060 | 1999-09-06 | Toronto | N&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function myFunction(text);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=# drop table employee;&lt;br /&gt;
DROP TABLE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==OUT parameter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION sales_tax(subtotal real, OUT tax real) AS $$&lt;br /&gt;
postgres$# BEGIN&lt;br /&gt;
postgres$#    tax := subtotal * 0.06;&lt;br /&gt;
postgres$# END;&lt;br /&gt;
postgres$# $$ LANGUAGE plpgsql;&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select sales_tax(100);&lt;br /&gt;
   REATE&lt;br /&gt;
 sales_tax&lt;br /&gt;
-----------&lt;br /&gt;
         6&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function sales_tax(subtotal real, OUT tax real);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Output parameters are most useful when returning multiple values==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# -- Output parameters are most useful when returning multiple values&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION sum_n_product(x int, y int, OUT sum int, OUT prod int) AS $$&lt;br /&gt;
postgres$# BEGIN&lt;br /&gt;
postgres$#    sum := x + y;&lt;br /&gt;
postgres$#    prod := x * y;&lt;br /&gt;
postgres$# END;&lt;br /&gt;
postgres$# $$ LANGUAGE plpgsql;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select sum_n_product(1,2);&lt;br /&gt;
     REATE&lt;br /&gt;
 sum_n_product&lt;br /&gt;
---------------&lt;br /&gt;
 (3,2)&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function sum_n_product(x int, y int, OUT sum int, OUT prod int);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pass constant to function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION &amp;quot;you_me&amp;quot; (integer) RETURNS integer AS &amp;quot;&lt;br /&gt;
postgres&amp;quot;#   DECLARE&lt;br /&gt;
postgres&amp;quot;#    RENAME $1 TO user_no;&lt;br /&gt;
postgres&amp;quot;#     --you INTEGER := 5;&lt;br /&gt;
postgres&amp;quot;#   BEGIN&lt;br /&gt;
postgres&amp;quot;#     return user_no;&lt;br /&gt;
postgres&amp;quot;#   END;&amp;quot; LANGUAGE &amp;quot;plpgsql&amp;quot;;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select you_me(1);&lt;br /&gt;
 you_me&lt;br /&gt;
--------&lt;br /&gt;
      1&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pass in a whole row==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE TABLE employee (&lt;br /&gt;
postgres(#     ID         int,&lt;br /&gt;
postgres(#     name       varchar(10),&lt;br /&gt;
postgres(#     salary     real,&lt;br /&gt;
postgres(#     start_date date,&lt;br /&gt;
postgres(#     city       varchar(10),&lt;br /&gt;
postgres(#     region     char(1)&lt;br /&gt;
postgres(# );&lt;br /&gt;
CREATE TABLE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (1,  &amp;quot;Jason&amp;quot;, 40420,  &amp;quot;02/01/94&amp;quot;, &amp;quot;New York&amp;quot;, &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (2,  &amp;quot;Robert&amp;quot;,14420,  &amp;quot;01/02/95&amp;quot;, &amp;quot;Vancouver&amp;quot;,&amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (3,  &amp;quot;Celia&amp;quot;, 24020,  &amp;quot;12/03/96&amp;quot;, &amp;quot;Toronto&amp;quot;,  &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (4,  &amp;quot;Linda&amp;quot;, 40620,  &amp;quot;11/04/97&amp;quot;, &amp;quot;New York&amp;quot;, &amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (5,  &amp;quot;David&amp;quot;, 80026,  &amp;quot;10/05/98&amp;quot;, &amp;quot;Vancouver&amp;quot;,&amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (6,  &amp;quot;James&amp;quot;, 70060,  &amp;quot;09/06/99&amp;quot;, &amp;quot;Toronto&amp;quot;,  &amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (7,  &amp;quot;Alison&amp;quot;,90620,  &amp;quot;08/07/00&amp;quot;, &amp;quot;New York&amp;quot;, &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (8,  &amp;quot;Chris&amp;quot;, 26020,  &amp;quot;07/08/01&amp;quot;, &amp;quot;Vancouver&amp;quot;,&amp;quot;N&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=# insert into employee (ID, name,    salary, start_date, city,       region)&lt;br /&gt;
postgres-#               values (9,  &amp;quot;Mary&amp;quot;,  60020,  &amp;quot;06/09/02&amp;quot;, &amp;quot;Toronto&amp;quot;,  &amp;quot;W&amp;quot;);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select * from employee;&lt;br /&gt;
                         REATE&lt;br /&gt;
 id |  name  | salary | start_date |   city    | region&lt;br /&gt;
----+--------+--------+------------+-----------+--------&lt;br /&gt;
  1 | Jason  |  40420 | 1994-02-01 | New York  | W&lt;br /&gt;
  2 | Robert |  14420 | 1995-01-02 | Vancouver | N&lt;br /&gt;
  3 | Celia  |  24020 | 1996-12-03 | Toronto   | W&lt;br /&gt;
  4 | Linda  |  40620 | 1997-11-04 | New York  | N&lt;br /&gt;
  5 | David  |  80026 | 1998-10-05 | Vancouver | W&lt;br /&gt;
  6 | James  |  70060 | 1999-09-06 | Toronto   | N&lt;br /&gt;
  7 | Alison |  90620 | 2000-08-07 | New York  | W&lt;br /&gt;
  8 | Chris  |  26020 | 2001-07-08 | Vancouver | N&lt;br /&gt;
  9 | Mary   |  60020 | 2002-06-09 | Toronto   | W&lt;br /&gt;
(9 rows)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION concat_selected_fields(in_t employee) RETURNS text AS $$&lt;br /&gt;
postgres$# BEGIN&lt;br /&gt;
postgres$#    RETURN in_t.ID || in_t.name || in_t.city || in_t.region;&lt;br /&gt;
postgres$# END;&lt;br /&gt;
postgres$# $$ LANGUAGE plpgsql;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select concat_selected_fields(employee.*) from employee;&lt;br /&gt;
         REATE&lt;br /&gt;
 concat_selected_fields&lt;br /&gt;
------------------------&lt;br /&gt;
 1JasonNew YorkW&lt;br /&gt;
 2RobertVancouverN&lt;br /&gt;
 3CeliaTorontoW&lt;br /&gt;
 4LindaNew YorkN&lt;br /&gt;
 5DavidVancouverW&lt;br /&gt;
 6JamesTorontoN&lt;br /&gt;
 7AlisonNew YorkW&lt;br /&gt;
 8ChrisVancouverN&lt;br /&gt;
 9MaryTorontoW&lt;br /&gt;
(9 rows)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function concat_selected_fields(in_t employee);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=# drop table employee;&lt;br /&gt;
DROP TABLE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Real number parameter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION sales_tax(subtotal real) RETURNS real AS $$&lt;br /&gt;
postgres$# BEGIN&lt;br /&gt;
postgres$#    RETURN subtotal * 0.06;&lt;br /&gt;
postgres$# END;&lt;br /&gt;
postgres$# $$ LANGUAGE plpgsql;&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select sales_tax(100);&lt;br /&gt;
   REATE&lt;br /&gt;
 sales_tax&lt;br /&gt;
-----------&lt;br /&gt;
         6&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function sales_tax( real);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Two out parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION dup (f1 anyelement, OUT f2 anyelement, OUT f3 anyarray)&lt;br /&gt;
postgres-# AS &amp;quot;select $1, array[$1,$1]&amp;quot; LANGUAGE sql;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# SELECT * FROM dup(22);&lt;br /&gt;
    REATE&lt;br /&gt;
 f2 |   f3&lt;br /&gt;
----+---------&lt;br /&gt;
 22 | {22,22}&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function dup(f1 anyelement, OUT f2 anyelement, OUT f3 anyarray);&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use defined data type as the function parameter==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE TYPE inventory_item AS (&lt;br /&gt;
postgres(#    name            text,&lt;br /&gt;
postgres(#    supplier_id     integer,&lt;br /&gt;
postgres(#    price           numeric&lt;br /&gt;
postgres(# );&lt;br /&gt;
CREATE TYPE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE TABLE on_hand (&lt;br /&gt;
postgres(#    item      inventory_item,&lt;br /&gt;
postgres(#    count     integer&lt;br /&gt;
postgres(# );&lt;br /&gt;
CREATE TABLE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# INSERT INTO on_hand VALUES (ROW(&amp;quot;fuzzy dice&amp;quot;, 42, 1.99), 1000);&lt;br /&gt;
INSERT 0 1&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select * from on_hand;&lt;br /&gt;
          item          | count&lt;br /&gt;
------------------------+-------&lt;br /&gt;
 (&amp;quot;fuzzy dice&amp;quot;,42,1.99) |  1000&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# CREATE FUNCTION price_extension(inventory_item, integer) RETURNS numeric&lt;br /&gt;
postgres-# AS &amp;quot;SELECT $1.price * $2&amp;quot; LANGUAGE SQL;&lt;br /&gt;
CREATE FUNCTION&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# select price_extension(ROW(&amp;quot;fuzzy dice&amp;quot;, 42, 1.99), 1000);&lt;br /&gt;
 price_extension&lt;br /&gt;
-----------------&lt;br /&gt;
         1990.00&lt;br /&gt;
(1 row)&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=# drop function price_extension(inventory_item, integer);&lt;br /&gt;
DROP FUNCTION&lt;br /&gt;
postgres=# drop table on_hand;&lt;br /&gt;
DROP TABLE&lt;br /&gt;
postgres=# drop type inventory_item;&lt;br /&gt;
DROP TYPE&lt;br /&gt;
postgres=#&lt;br /&gt;
postgres=#&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>