⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create_function.sgml

📁 关系型数据库 Postgresql 6.5.2
💻 SGML
字号:
<refentry id="SQL-CREATEFUNCTION"> <refmeta>  <refentrytitle>   CREATE FUNCTION  </refentrytitle>  <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> <refnamediv>  <refname>   CREATE FUNCTION  </refname>  <refpurpose>   Defines a new function  </refpurpose> </refnamediv> <refsynopsisdiv>  <refsynopsisdivinfo>   <date>1998-09-09</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">definition</replaceable>    LANGUAGE '<replaceable class="parameter">langname</replaceable>'  </synopsis>    <refsect2 id="R2-SQL-CREATEFUNCTION-1">   <refsect2info>    <date>1998-09-09</date>   </refsect2info>   <title>    Inputs   </title>   <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">definition</replaceable></term>      <listitem>       <para>	A string defining the function; the meaning depends on the language.	It may be an internal function name, the path to an object file,	an SQL query, or text in a procedural language.       </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 name of a created procedural	language. See <command>CREATE LANGUAGE</command> for details.       </para>      </listitem>     </varlistentry>    </variablelist>   </para>  </refsect2>  <refsect2 id="R2-SQL-CREATEFUNCTION-2">   <refsect2info>    <date>1998-09-09</date>   </refsect2info>   <title>    Outputs   </title>   <para>    <variablelist>     <varlistentry>      <term><computeroutput>CREATE       </computeroutput></term>      <listitem>       <para>	This is returned if the command completes successfully.       </para>      </listitem>     </varlistentry>    </variablelist>   </para>  </refsect2> </refsynopsisdiv> <refsect1 id="R1-SQL-CREATEFUNCTION-1">  <refsect1info>   <date>1998-09-09</date>  </refsect1info>  <title>   Description  </title>  <para>   <command>CREATE FUNCTION</command> allows a   <productname>Postgres</productname> user   to register a function   with a database. Subsequently, this user is treated as the   owner of the function.  </para>    <refsect2 id="R2-SQL-CREATEFUNCTION-3">   <refsect2info>    <date>1998-09-09</date>   </refsect2info>   <title>    Notes   </title>   <para>    Refer to the chapter on functions in the <citetitle>PostgreSQL Programmer's Guide</citetitle>    for further information.   </para>   <para>    Use <command>DROP FUNCTION</command>    to drop user-defined functions.   </para>  <para>   <productname>Postgres</productname> allows function "overloading";   that is, the same name can be used for several different functions   so long as they have distinct argument types.  This facility must be   used with caution for INTERNAL and C-language functions, however.  </para>  <para>   Two INTERNAL functions cannot have the same C name without causing   errors at link time.  To get around that, give them different C names   (for example, use the argument types as part of the C names), then   specify those names in the AS clause of <command>CREATE FUNCTION</command>.   If the AS clause is left empty then <command>CREATE FUNCTION</command>   assumes the C name of the function is the same as the SQL name.  </para>  <para>   For dynamically-loaded C functions, the SQL name of the function must   be the same as the C function name, because the AS clause is used to   give the path name of the object file containing the C code.  In this   situation it is best not to try to overload SQL function names.  It   might work to load a C function that has the same C name as an internal   function or another dynamically-loaded function --- or it might not.   On some platforms the dynamic loader may botch the load in interesting   ways if there is a conflict of C function names.  So, even if it works   for you today, you might regret overloading names later when you try   to run the code somewhere else.  </para>  </refsect2> </refsect1>   <refsect1 id="R1-SQL-CREATEFUNCTION-2">  <title>   Usage  </title>  <para>   To create a simple SQL function:  <programlisting>CREATE FUNCTION one() RETURNS int4    AS 'SELECT 1 AS RESULT'    LANGUAGE 'sql';SELECT one() AS answer;   <computeroutput>    answer     ------    1   </computeroutput>  </programlisting>  </para>  <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>   <command>CREATE FUNCTION</command> is   a <productname>Postgres</productname> language extension.   </para>  <refsect2 id="R2-SQL-CREATEFUNCTION-4">   <refsect2info>    <date>1998-09-09</date>   </refsect2info>   <title>    SQL/PSM   </title>   <para>    <note>     <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. As of mid-1998, this      has not yet happened, but it is hoped that PSM will      eventually become a standard.     </para>    </note>    SQL/PSM <command>CREATE FUNCTION</command> has the following syntax:    <synopsis>CREATE FUNCTION <replaceable class="parameter">name</replaceable>    ( [ [ IN | OUT | INOUT ] <replaceable class="parameter">eter</replaceable>eable>eable> <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>    </synopsis>   </para>  </refsect2> </refsect1></refentry><!-- Keep this comment at the end of the fileLocal variables:mode: sgmlsgml-omittag:nilsgml-shorttag:tsgml-minimize-attributes:nilsgml-always-quote-attributes:tsgml-indent-step:1sgml-indent-data:tsgml-parent-document:nilsgml-default-dtd-file:"../reference.ced"sgml-exposed-tags:nilsgml-local-catalogs:"/usr/lib/sgml/catalog"sgml-local-ecat-files:nilEnd:-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -