diff options
Diffstat (limited to 'doc/src/sgml/html/sql-dropprocedure.html')
-rw-r--r-- | doc/src/sgml/html/sql-dropprocedure.html | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/doc/src/sgml/html/sql-dropprocedure.html b/doc/src/sgml/html/sql-dropprocedure.html new file mode 100644 index 0000000..36902eb --- /dev/null +++ b/doc/src/sgml/html/sql-dropprocedure.html @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>DROP PROCEDURE</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="sql-droppolicy.html" title="DROP POLICY" /><link rel="next" href="sql-droppublication.html" title="DROP PUBLICATION" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">DROP PROCEDURE</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="sql-droppolicy.html" title="DROP POLICY">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="sql-commands.html" title="SQL Commands">Up</a></td><th width="60%" align="center">SQL Commands</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 15.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="sql-droppublication.html" title="DROP PUBLICATION">Next</a></td></tr></table><hr /></div><div class="refentry" id="SQL-DROPPROCEDURE"><div class="titlepage"></div><a id="id-1.9.3.124.1" class="indexterm"></a><div class="refnamediv"><h2><span class="refentrytitle">DROP PROCEDURE</span></h2><p>DROP PROCEDURE — remove a procedure</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis"> +DROP PROCEDURE [ IF EXISTS ] <em class="replaceable"><code>name</code></em> [ ( [ [ <em class="replaceable"><code>argmode</code></em> ] [ <em class="replaceable"><code>argname</code></em> ] <em class="replaceable"><code>argtype</code></em> [, ...] ] ) ] [, ...] + [ CASCADE | RESTRICT ] +</pre></div><div class="refsect1" id="id-1.9.3.124.5"><h2>Description</h2><p> + <code class="command">DROP PROCEDURE</code> removes the definition of one or more + existing procedures. To execute this command the user must be the + owner of the procedure(s). The argument types to the + procedure(s) usually must be specified, since several different procedures + can exist with the same name and different argument lists. + </p></div><div class="refsect1" id="id-1.9.3.124.6"><h2>Parameters</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="literal">IF EXISTS</code></span></dt><dd><p> + Do not throw an error if the procedure does not exist. A notice is issued + in this case. + </p></dd><dt><span class="term"><em class="replaceable"><code>name</code></em></span></dt><dd><p> + The name (optionally schema-qualified) of an existing procedure. + </p></dd><dt><span class="term"><em class="replaceable"><code>argmode</code></em></span></dt><dd><p> + The mode of an argument: <code class="literal">IN</code>, <code class="literal">OUT</code>, + <code class="literal">INOUT</code>, or <code class="literal">VARIADIC</code>. If omitted, + the default is <code class="literal">IN</code> (but see below). + </p></dd><dt><span class="term"><em class="replaceable"><code>argname</code></em></span></dt><dd><p> + The name of an argument. + Note that <code class="command">DROP PROCEDURE</code> does not actually pay + any attention to argument names, since only the argument data + types are used to determine the procedure's identity. + </p></dd><dt><span class="term"><em class="replaceable"><code>argtype</code></em></span></dt><dd><p> + The data type(s) of the procedure's arguments (optionally + schema-qualified), if any. + See below for details. + </p></dd><dt><span class="term"><code class="literal">CASCADE</code></span></dt><dd><p> + Automatically drop objects that depend on the procedure, + and in turn all objects that depend on those objects + (see <a class="xref" href="ddl-depend.html" title="5.14. Dependency Tracking">Section 5.14</a>). + </p></dd><dt><span class="term"><code class="literal">RESTRICT</code></span></dt><dd><p> + Refuse to drop the procedure if any objects depend on it. This + is the default. + </p></dd></dl></div></div><div class="refsect1" id="SQL-DROPPROCEDURE-NOTES"><h2>Notes</h2><p> + If there is only one procedure of the given name, the argument list + can be omitted. Omit the parentheses too in this case. + </p><p> + In <span class="productname">PostgreSQL</span>, it's sufficient to list the + input (including <code class="literal">INOUT</code>) arguments, + because no two routines of the same name are allowed to share the same + input-argument list. Moreover, the <code class="command">DROP</code> command + will not actually check that you wrote the types + of <code class="literal">OUT</code> arguments correctly; so any arguments that + are explicitly marked <code class="literal">OUT</code> are just noise. But + writing them is recommendable for consistency with the + corresponding <code class="command">CREATE</code> command. + </p><p> + For compatibility with the SQL standard, it is also allowed to write + all the argument data types (including those of <code class="literal">OUT</code> + arguments) without + any <em class="replaceable"><code>argmode</code></em> markers. + When this is done, the types of the procedure's <code class="literal">OUT</code> + argument(s) <span class="emphasis"><em>will</em></span> be verified against the command. + This provision creates an ambiguity, in that when the argument list + contains no <em class="replaceable"><code>argmode</code></em> + markers, it's unclear which rule is intended. + The <code class="command">DROP</code> command will attempt the lookup both ways, + and will throw an error if two different procedures are found. + To avoid the risk of such ambiguity, it's recommendable to + write <code class="literal">IN</code> markers explicitly rather than letting them + be defaulted, thus forcing the + traditional <span class="productname">PostgreSQL</span> interpretation to be + used. + </p><p> + The lookup rules just explained are also used by other commands that + act on existing procedures, such as <code class="command">ALTER PROCEDURE</code> + and <code class="command">COMMENT ON PROCEDURE</code>. + </p></div><div class="refsect1" id="SQL-DROPPROCEDURE-EXAMPLES"><h2>Examples</h2><p> + If there is only one procedure <code class="literal">do_db_maintenance</code>, + this command is sufficient to drop it: +</p><pre class="programlisting"> +DROP PROCEDURE do_db_maintenance; +</pre><p> + </p><p> + Given this procedure definition: +</p><pre class="programlisting"> +CREATE PROCEDURE do_db_maintenance(IN target_schema text, OUT results text) ... +</pre><p> + any one of these commands would work to drop it: +</p><pre class="programlisting"> +DROP PROCEDURE do_db_maintenance(IN target_schema text, OUT results text); +DROP PROCEDURE do_db_maintenance(IN text, OUT text); +DROP PROCEDURE do_db_maintenance(IN text); +DROP PROCEDURE do_db_maintenance(text); +DROP PROCEDURE do_db_maintenance(text, text); -- potentially ambiguous +</pre><p> + However, the last example would be ambiguous if there is also, say, +</p><pre class="programlisting"> +CREATE PROCEDURE do_db_maintenance(IN target_schema text, IN options text) ... +</pre></div><div class="refsect1" id="SQL-DROPPROCEDURE-COMPATIBILITY"><h2>Compatibility</h2><p> + This command conforms to the SQL standard, with + these <span class="productname">PostgreSQL</span> extensions: + </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>The standard only allows one procedure to be dropped per command.</p></li><li class="listitem"><p>The <code class="literal">IF EXISTS</code> option is an extension.</p></li><li class="listitem"><p>The ability to specify argument modes and names is an + extension, and the lookup rules differ when modes are given.</p></li></ul></div></div><div class="refsect1" id="id-1.9.3.124.10"><h2>See Also</h2><span class="simplelist"><a class="xref" href="sql-createprocedure.html" title="CREATE PROCEDURE"><span class="refentrytitle">CREATE PROCEDURE</span></a>, <a class="xref" href="sql-alterprocedure.html" title="ALTER PROCEDURE"><span class="refentrytitle">ALTER PROCEDURE</span></a>, <a class="xref" href="sql-dropfunction.html" title="DROP FUNCTION"><span class="refentrytitle">DROP FUNCTION</span></a>, <a class="xref" href="sql-droproutine.html" title="DROP ROUTINE"><span class="refentrytitle">DROP ROUTINE</span></a></span></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sql-droppolicy.html" title="DROP POLICY">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sql-commands.html" title="SQL Commands">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sql-droppublication.html" title="DROP PUBLICATION">Next</a></td></tr><tr><td width="40%" align="left" valign="top">DROP POLICY </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 15.4 Documentation">Home</a></td><td width="40%" align="right" valign="top"> DROP PUBLICATION</td></tr></table></div></body></html>
\ No newline at end of file |