<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/drop_function.sgml,v 1.32 2006/09/16 00:30:18 momjian Exp $
PostgreSQL documentation
-->

<refentry id="SQL-DROPFUNCTION">
 <refmeta>
  <refentrytitle id="SQL-DROPFUNCTION-TITLE">DROP FUNCTION</refentrytitle>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>DROP FUNCTION</refname>
  <refpurpose>remove a function</refpurpose>
 </refnamediv>

 <indexterm zone="sql-dropfunction">
  <primary>DROP FUNCTION</primary>
 </indexterm>

 <refsynopsisdiv>
<synopsis>
DROP FUNCTION [ IF EXISTS ] <replaceable class="parameter">name</replaceable> ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] )
    [ CASCADE | RESTRICT ]
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>DROP FUNCTION</command> removes the definition of an existing
   function. To execute this command the user must be the
   owner of the function. The argument types to the
   function must be specified, since several different functions
   may exist with the same name and different argument lists.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
    <varlistentry>
    <term><literal>IF EXISTS</literal></term>
    <listitem>
     <para>
      Do not throw an error if the function does not exist. A notice is issued 
      in this case.
     </para>
    </listitem>
   </varlistentry>

  <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name (optionally schema-qualified) of an existing function.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">argmode</replaceable></term>

    <listitem>
     <para>
      The mode of an argument: either <literal>IN</>, <literal>OUT</>,
      or <literal>INOUT</>.  If omitted, the default is <literal>IN</>.
      Note that <command>DROP FUNCTION</command> does not actually pay
      any attention to <literal>OUT</> arguments, since only the input
      arguments are needed to determine the function's identity.
      So it is sufficient to list the <literal>IN</> and <literal>INOUT</>
      arguments.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">argname</replaceable></term>

    <listitem>
     <para>
      The name of an argument.
      Note that <command>DROP FUNCTION</command> does not actually pay
      any attention to argument names, since only the argument data
      types are needed to determine the function's identity.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">argtype</replaceable></term>

    <listitem>
     <para>
      The data type(s) of the function's arguments (optionally 
      schema-qualified), if any.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>CASCADE</literal></term>
    <listitem>
     <para>
      Automatically drop objects that depend on the function (such as
      operators or triggers).
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>RESTRICT</literal></term>
    <listitem>
     <para>
      Refuse to drop the function if any objects depend on it.  This
      is the default.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1 id="SQL-DROPFUNCTION-examples">
  <title>Examples</title>

  <para>
   This command removes the square root function:

<programlisting>
DROP FUNCTION sqrt(integer);
</programlisting>
  </para>
 </refsect1>

 <refsect1 id="SQL-DROPFUNCTION-compatibility">
  <title>Compatibility</title>
  
  <para>
   A <command>DROP FUNCTION</command> statement is defined in the SQL
   standard, but it is not compatible with this command.
  </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"></member>
   <member><xref linkend="sql-alterfunction" endterm="sql-alterfunction-title"></member>
  </simplelist>
 </refsect1>

</refentry>
