diff options
Diffstat (limited to 'doc/src/sgml/ref/create_function.sgml')
-rw-r--r-- | doc/src/sgml/ref/create_function.sgml | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/create_function.sgml b/doc/src/sgml/ref/create_function.sgml new file mode 100644 index 00000000000..e032adec77a --- /dev/null +++ b/doc/src/sgml/ref/create_function.sgml @@ -0,0 +1,267 @@ +<REFENTRY ID="SQL-CREATEFUNCTION-1"> + <REFMETA> + <REFENTRYTITLE> + CREATE FUNCTION + </REFENTRYTITLE> + <REFMISCINFO>SQL - Language Statements</REFMISCINFO> + </REFMETA> + <REFNAMEDIV> + <REFNAME> + CREATE FUNCTION + </REFNAME> + <REFPURPOSE> + Defines a new function + </REFPURPOSE> + + <REFSYNOPSISDIV> + <REFSYNOPSISDIVINFO> + <DATE>1998-04-15</DATE> + </REFSYNOPSISDIVINFO> + <SYNOPSIS> + CREATE FUNCTION <replaceable class="parameter">name</replaceable> ([<replaceable class="parameter">ftype</replaceable> [, ...]]) + RETURNS <replaceable class="parameter">rtype</replaceable> + AS <replaceable class="parameter">path</replaceable> + LANGUAGE '<replaceable class="parameter">langname</replaceable>' + </SYNOPSIS> + + <REFSECT2 ID="R2-SQL-CREATEFUNCTION-1"> + <REFSECT2INFO> + <DATE>1998-04-15</DATE> + </REFSECT2INFO> + <TITLE> + Inputs + </TITLE> + <PARA> + </PARA> + <VARIABLELIST> + <VARLISTENTRY> + <TERM> + </TERM> + <LISTITEM> + <PARA> + <VARIABLELIST> + <VARLISTENTRY> + <TERM> + <replaceable class="parameter">name</replaceable> + </TERM> + <LISTITEM> + <PARA> + The name of a function to create. + </PARA> + </LISTITEM> + </VARLISTENTRY> + <VARLISTENTRY> + <TERM> + <replaceable class="parameter">ftype</replaceable> + </TERM> + <LISTITEM> + <PARA> + The data type of function arguments. + </PARA> + </LISTITEM> + </VARLISTENTRY> + <VARLISTENTRY> + <TERM> + <replaceable class="parameter">rtype</replaceable> + </TERM> + <LISTITEM> + <PARA> + The return data type. + </PARA> + </LISTITEM> + </VARLISTENTRY> + <VARLISTENTRY> + <TERM> + <replaceable class="parameter">path</replaceable> + </TERM> + <LISTITEM> + <PARA> + May be either an SQL-query or an absolute path to an + object file. + </PARA> + </LISTITEM> + </VARLISTENTRY> + <VARLISTENTRY> + <TERM> + <replaceable class="parameter">langname</replaceable> + </TERM> + <LISTITEM> + <PARA> + may be '<literal>c</literal>', '<literal>sql</literal>', '<literal>internal</literal>' or '<replaceable class="parameter">plname</replaceable>'. + (where '<replaceable class="parameter">plname</replaceable>' is the language name of a created procedural + language. See <command>CREATE LANGUAGE</command> for details). + </PARA> + </LISTITEM> + </VARLISTENTRY> + </variablelist> + </LISTITEM> + </VARLISTENTRY> + </VARIABLELIST> + </REFSECT2> + + <REFSECT2 ID="R2-SQL-CREATEFUNCTION-2"> + <REFSECT2INFO> + <DATE>1998-04-15</DATE> + </REFSECT2INFO> + <TITLE> + Outputs + </TITLE> + <PARA> + </PARA> + <VARIABLELIST> + <VARLISTENTRY> + <TERM> + </TERM> + <LISTITEM> + <PARA> + <VARIABLELIST> + <VARLISTENTRY> + <TERM> + <ReturnValue>CREATE</ReturnValue> + </TERM> + <LISTITEM> + <PARA> + This is returned if the command completes successfully. + </PARA> + </LISTITEM> + </VARLISTENTRY> + </variablelist> + </LISTITEM> + </VARLISTENTRY> + </VARIABLELIST> + </REFSECT2> + </REFSYNOPSISDIV> + + <REFSECT1 ID="R1-SQL-CREATEFUNCTION-1"> + <REFSECT1INFO> + <DATE>1998-04-15</DATE> + </REFSECT1INFO> + <TITLE> + Description + </TITLE> + <PARA> + With this command, a PostgreSQL user can register a function + with PostgreSQL. Subsequently, this user is treated as the + owner of the function. + </PARA> + + <REFSECT2 ID="R2-SQL-CREATEFUNCTION-3"> + <REFSECT2INFO> + <DATE>1998-04-15</DATE> + </REFSECT2INFO> + <TITLE> + Notes + </TITLE> + <PARA> + Refer to <citetitle>PostgreSQL User's Guide</citetitle> chapter 6 for further information. + <comment>This reference needs to be corrected.</comment> + </PARA> + <PARA> + Refer to the <citerefentry> + <refentrytitle>DROP FUNCTION</refentrytitle> + </citerefentry> statement to drop functions. + </PARA> + </REFSECT2> + + <REFSECT1 ID="R1-SQL-CREATEFUNCTION-2"> + <TITLE> + Usage + </TITLE> + <PARA> + To create a simple SQL function: + </PARA> + <ProgramListing> + CREATE FUNCTION one() RETURNS int4 + AS 'SELECT 1 AS RESULT' + LANGUAGE 'sql'; + + SELECT one() AS answer; + + <computeroutput>answer + ------ + 1 </computeroutput> + </ProgramListing> + <para> + To create a C function, calling a routine from a user-created + shared library. This particular routine calculates a check + digit and returns TRUE if the check digit in the function parameters + is correct. It is intended for use in a CHECK contraint. + </para> + <programlisting> + <userinput>CREATE FUNCTION ean_checkdigit(bpchar, bpchar) RETURNS bool + AS '/usr1/proj/bray/sql/funcs.so' LANGUAGE 'c'; + + CREATE TABLE product + ( + id char(8) PRIMARY KEY, + eanprefix char(8) CHECK (eanprefix ~ '[0-9]{2}-[0-9]{5}') + REFERENCES brandname(ean_prefix), + eancode char(6) CHECK (eancode ~ '[0-9]{6}'), + CONSTRAINT ean CHECK (ean_checkdigit(eanprefix, eancode)) + );</userinput> + </programlisting> + </REFSECT1> + + <REFSECT1 ID="R1-SQL-CREATEFUNCTION-3"> + <TITLE> + Bugs + </TITLE> + <PARA> + A C function cannot return a set of values. + </PARA> + </REFSECT1> + + <REFSECT1 ID="R1-SQL-CREATEFUNCTION-4"> + <TITLE> + Compatibility + </TITLE> + <PARA> + The CREATE FUNCTION statement is a PostgreSQL language extension. + </PARA> + + <REFSECT2 ID="R2-SQL-CREATEFUNCTION-4"> + <REFSECT2INFO> + <DATE>1998-04-15</DATE> + </REFSECT2INFO> + <TITLE> + SQL/PSM<footnote> + <para> + PSM stands for Persistent Stored Modules, it is a procedural + language and it was originally hoped that PSM would be ratified + as an official standard by late 1996. However PSM will + eventually become a standard. + </para> + </footnote> + </TITLE> + <para> + The SQL/PSM CREATE FUNCTION statement has the following syntax: + <programlisting> + CREATE FUNCTION <replaceable class="parameter">name</replaceable> + ( [ [IN|OUT|INOUT] <replaceable class="parameter">parm</replaceable> <replaceable class="parameter">type</replaceable> [, ...] ]) + RETURNS <replaceable class="parameter">rtype</replaceable> + LANGUAGE '<replaceable class="parameter">langname</replaceable>' + ESPECIFIC <replaceable class="parameter">routine</replaceable> + <replaceable class="parameter">SQL-statement</replaceable> + </programlisting> + </para> + </refsect2> + </refsect1> +</REFENTRY> + + +<!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:1 +sgml-indent-data:t +sgml-parent-document:nil +sgml-default-dtd-file:"../reference.ced" +sgml-exposed-tags:nil +sgml-local-catalogs:"/usr/lib/sgml/catalog" +sgml-local-ecat-files:nil +End: +--> |