summaryrefslogtreecommitdiff
path: root/doc/src/sgml/ref/create_function.sgml
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-01-04 00:39:53 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-01-04 00:39:53 +0000
commit4e94ea9fc92abff333a8d3cd99e7b667ab364442 (patch)
tree85a6e5ced69104c73dd0c52fb142ba68bd4dcbd4 /doc/src/sgml/ref/create_function.sgml
parent246be304a50db42fae2f7c70329049442211b324 (diff)
More minor updates and copy-editing.
Diffstat (limited to 'doc/src/sgml/ref/create_function.sgml')
-rw-r--r--doc/src/sgml/ref/create_function.sgml72
1 files changed, 38 insertions, 34 deletions
diff --git a/doc/src/sgml/ref/create_function.sgml b/doc/src/sgml/ref/create_function.sgml
index 7d8d01f4cd3..0991e96a54a 100644
--- a/doc/src/sgml/ref/create_function.sgml
+++ b/doc/src/sgml/ref/create_function.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/create_function.sgml,v 1.63 2004/11/27 21:27:07 petere Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/create_function.sgml,v 1.64 2005/01/04 00:39:53 tgl Exp $
-->
<refentry id="SQL-CREATEFUNCTION">
@@ -62,8 +62,8 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
<para>
If you drop and then recreate a function, the new function is not
- the same entity as the old; you will break existing rules, views,
- triggers, etc. that referred to the old function. Use
+ the same entity as the old; you will have to drop existing rules, views,
+ triggers, etc. that refer to the old function. Use
<command>CREATE OR REPLACE FUNCTION</command> to change a function
definition without breaking objects that refer to the function.
</para>
@@ -106,16 +106,8 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
<listitem>
<para>
The data type(s) of the function's arguments (optionally
- schema-qualified), if any. The argument types may be base, complex, or
- domains, or copy the type of an existing column.
- </para>
- <para>
- The type of a column is referenced by writing
- <literal><replaceable
- class="parameter">tablename</replaceable>.<replaceable
- class="parameter">columnname</replaceable>%TYPE</literal>;
- using this can sometimes help make a function independent from
- changes to the definition of a table.
+ schema-qualified), if any. The argument types may be base, composite,
+ or domain types, or may reference the type of a table column.
</para>
<para>
Depending on the implementation language it may also be allowed
@@ -123,6 +115,14 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
Pseudotypes indicate that the actual argument type is either
incompletely specified, or outside the set of ordinary SQL data types.
</para>
+ <para>
+ The type of a column is referenced by writing
+ <literal><replaceable
+ class="parameter">tablename</replaceable>.<replaceable
+ class="parameter">columnname</replaceable>%TYPE</literal>.
+ Using this feature can sometimes help make a function independent of
+ changes to the definition of a table.
+ </para>
</listitem>
</varlistentry>
@@ -132,18 +132,22 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
<listitem>
<para>
The return data type (optionally schema-qualified). The return type
- may be a base type, complex type, or a domain,
- or may be specified to copy the type of an existing column. See the description
- under <literal>argtype</literal> above on how to reference the type
- of an existing column.
- </para>
- <para>
+ may be a base, composite, or domain type,
+ or may reference the type of a table column.
Depending on the implementation language it may also be allowed
to specify <quote>pseudotypes</> such as <type>cstring</>.
+ </para>
+ <para>
The <literal>SETOF</literal>
modifier indicates that the function will return a set of
items, rather than a single item.
</para>
+ <para>
+ The type of a column is referenced by writing
+ <literal><replaceable
+ class="parameter">tablename</replaceable>.<replaceable
+ class="parameter">columnname</replaceable>%TYPE</literal>.
+ </para>
</listitem>
</varlistentry>
@@ -155,8 +159,7 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
The name of the language that the function is implemented in.
May be <literal>SQL</literal>, <literal>C</literal>,
<literal>internal</literal>, or the name of a user-defined
- procedural language. (See also <xref linkend="app-createlang"
- endterm="app-createlang-title">.) For backward compatibility,
+ procedural language. For backward compatibility,
the name may be enclosed by single quotes.
</para>
</listitem>
@@ -303,7 +306,7 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
<term><literal>isStrict</></term>
<listitem>
<para>
- Equivalent to <literal>STRICT</literal> or <literal>RETURNS NULL ON NULL INPUT</literal>
+ Equivalent to <literal>STRICT</literal> or <literal>RETURNS NULL ON NULL INPUT</literal>.
</para>
</listitem>
</varlistentry>
@@ -394,7 +397,7 @@ CREATE [ OR REPLACE ] FUNCTION <replaceable class="parameter">name</replaceable>
information and examples, see <xref linkend="xfunc">.
<programlisting>
CREATE FUNCTION add(integer, integer) RETURNS integer
- AS $$select $1 + $2;$$
+ AS 'select $1 + $2;'
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;
@@ -406,10 +409,11 @@ CREATE FUNCTION add(integer, integer) RETURNS integer
<application>PL/pgSQL</application>:
<programlisting>
-CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS '
+CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
BEGIN
RETURN i + 1;
- END;' LANGUAGE plpgsql;
+ END;
+$$ LANGUAGE plpgsql;
</programlisting>
</para>
</refsect1>
@@ -427,17 +431,17 @@ CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS '
</refsect1>
- <refsect1 id="sql-createfunction-seealso">
+ <refsect1>
<title>See Also</title>
- <para>
- <xref linkend="sql-alterfunction" endterm="sql-alterfunction-title">,
- <xref linkend="sql-dropfunction" endterm="sql-dropfunction-title">,
- <xref linkend="sql-grant" endterm="sql-grant-title">,
- <xref linkend="sql-load" endterm="sql-load-title">,
- <xref linkend="sql-revoke" endterm="sql-revoke-title">,
- <xref linkend="app-createlang">
- </para>
+ <simplelist type="inline">
+ <member><xref linkend="sql-alterfunction" endterm="sql-alterfunction-title"></member>
+ <member><xref linkend="sql-dropfunction" endterm="sql-dropfunction-title"></member>
+ <member><xref linkend="sql-grant" endterm="sql-grant-title"></member>
+ <member><xref linkend="sql-load" endterm="sql-load-title"></member>
+ <member><xref linkend="sql-revoke" endterm="sql-revoke-title"></member>
+ <member><xref linkend="app-createlang" endterm="app-createlang-title"></member>
+ </simplelist>
</refsect1>
</refentry>