| <!-- |
| doc/src/sgml/ref/drop_routine.sgml |
| PostgreSQL documentation |
| --> |
| |
| <refentry id="sql-droproutine"> |
| <indexterm zone="sql-droproutine"> |
| <primary>DROP ROUTINE</primary> |
| </indexterm> |
| |
| <refmeta> |
| <refentrytitle>DROP ROUTINE</refentrytitle> |
| <manvolnum>7</manvolnum> |
| <refmiscinfo>SQL - Language Statements</refmiscinfo> |
| </refmeta> |
| |
| <refnamediv> |
| <refname>DROP ROUTINE</refname> |
| <refpurpose>remove a routine</refpurpose> |
| </refnamediv> |
| |
| <refsynopsisdiv> |
| <synopsis> |
| DROP ROUTINE [ 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 ROUTINE</command> removes the definition of one or more |
| existing routines. The term <quote>routine</quote> includes |
| aggregate functions, normal functions, and procedures. See |
| under <xref linkend="sql-dropaggregate"/>, <xref linkend="sql-dropfunction"/>, |
| and <xref linkend="sql-dropprocedure"/> for the description of the |
| parameters, more examples, and further details. |
| </para> |
| </refsect1> |
| |
| <refsect1 id="sql-droproutine-notes"> |
| <title>Notes</title> |
| |
| <para> |
| The lookup rules used by <command>DROP ROUTINE</command> are |
| fundamentally the same as for <command>DROP PROCEDURE</command>; in |
| particular, <command>DROP ROUTINE</command> shares that command's |
| behavior of considering an argument list that has |
| no <replaceable class="parameter">argmode</replaceable> markers to be |
| possibly using the SQL standard's definition that <literal>OUT</literal> |
| arguments are included in the list. (<command>DROP AGGREGATE</command> |
| and <command>DROP FUNCTION</command> do not do that.) |
| </para> |
| |
| <para> |
| In some cases where the same name is shared by routines of different |
| kinds, it is possible for <command>DROP ROUTINE</command> to fail with |
| an ambiguity error when a more specific command (<command>DROP |
| FUNCTION</command>, etc.) would work. Specifying the argument type |
| list more carefully will also resolve such problems. |
| </para> |
| |
| <para> |
| These lookup rules are also used by other commands that |
| act on existing routines, such as <command>ALTER ROUTINE</command> |
| and <command>COMMENT ON ROUTINE</command>. |
| </para> |
| </refsect1> |
| |
| <refsect1 id="sql-droproutine-examples"> |
| <title>Examples</title> |
| |
| <para> |
| To drop the routine <literal>foo</literal> for type |
| <type>integer</type>: |
| <programlisting> |
| DROP ROUTINE foo(integer); |
| </programlisting> |
| This command will work independent of whether <literal>foo</literal> is an |
| aggregate, function, or procedure. |
| </para> |
| </refsect1> |
| |
| <refsect1 id="sql-droproutine-compatibility"> |
| <title>Compatibility</title> |
| |
| <para> |
| This command conforms to the SQL standard, with |
| these <productname>PostgreSQL</productname> extensions: |
| <itemizedlist> |
| <listitem> |
| <para>The standard only allows one routine to be dropped per command.</para> |
| </listitem> |
| <listitem> |
| <para>The <literal>IF EXISTS</literal> option is an extension.</para> |
| </listitem> |
| <listitem> |
| <para>The ability to specify argument modes and names is an |
| extension, and the lookup rules differ when modes are given.</para> |
| </listitem> |
| <listitem> |
| <para>User-definable aggregate functions are an extension.</para> |
| </listitem> |
| </itemizedlist></para> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| |
| <simplelist type="inline"> |
| <member><xref linkend="sql-dropaggregate"/></member> |
| <member><xref linkend="sql-dropfunction"/></member> |
| <member><xref linkend="sql-dropprocedure"/></member> |
| <member><xref linkend="sql-alterroutine"/></member> |
| </simplelist> |
| |
| <para> |
| Note that there is no <literal>CREATE ROUTINE</literal> command. |
| </para> |
| </refsect1> |
| |
| </refentry> |