============= DROP FUNCTION ============= .. container:: refentry :name: SQL-DROPFUNCTION .. container:: titlepage .. container:: refnamediv .. rubric:: DROP FUNCTION :name: drop-function DROP FUNCTION — 移除一个函数 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ] .. container:: refsect1 :name: id-1.9.3.114.5 .. rubric:: 描述 :name: 描述 ``DROP FUNCTION``\ 移除一个已有函数 的定义。要执行这个命令用户必须是该函数的拥有者。该函数的参数 类型必须被指定,因为多个不同的函数可能会具有相同的函数名和不 同的参数列表。 .. container:: refsect1 :name: id-1.9.3.114.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``IF EXISTS`` 如果该函数不存在则不要抛出一个错误,而是发出一个提示。 *``name``* 一个现有函数的名称(可以是模式限定的)。 如果未指定参数列表,则该名称在其模式中必须是唯一的。 *``argmode``* 一个参数的模式:\ ``IN``\ 、\ ``OUT``\ 、 ``INOUT``\ 或者\ ``VARIADIC``\ 。如果被忽略, 则默认为\ ``IN``\ 。注意 ``DROP FUNCTION``\ 并不真正关心 ``OUT``\ 参数,因为决定函数的身份时只需要输入参数。 因此列出\ ``IN``\ 、\ ``INOUT``\ 和 ``VARIADIC``\ 参数足以。 *``argname``* 一个参数的名称。注意 ``DROP FUNCTION``\ 并不真正关心 参数名称,因为决定函数的身份时只需要参数的数据类型。 *``argtype``* 如果函数有参数,这是函数参数的数据类型(可以是模式限定的)。 ``CASCADE`` 自动删除依赖于该函数的对象(例如操作符和触发器),然后删除所有 依赖于那些对象的对象(见\ `第 5.14 节 `__\ )。 ``RESTRICT`` 如果有任何对象依赖于该函数,则拒绝删除它。这是默认值。 .. container:: refsect1 :name: SQL-DROPFUNCTION-EXAMPLES .. rubric:: 示例 :name: 示例 这个命令移除平方根函数: .. code:: programlisting DROP FUNCTION sqrt(integer); 在一个命令中删除多个函数: .. code:: programlisting DROP FUNCTION sqrt(integer), sqrt(bigint); 如果函数名称在其模式中是唯一的,则可以在不带参数列表的情况下引用它: .. code:: programlisting DROP FUNCTION update_employee_salaries; 请注意,这与 .. code:: programlisting DROP FUNCTION update_employee_salaries(); 不同,后者引用一个零个参数的函数,而第一个变体才可以引用具有任意数量参数的函数, 包括零,只要该名称是唯一的。 .. container:: refsect1 :name: SQL-DROPFUNCTION-COMPATIBILITY .. rubric:: 兼容性 :name: 兼容性 该命令符合SQL标准,使用这些PostgreSQL扩展: .. container:: itemizedlist - 该标准只允许每个命令删除一个函数。 - ``IF EXISTS``\ 选项 - 能够指定参数模式和名称 .. container:: refsect1 :name: id-1.9.3.114.9 .. rubric:: 另见 :name: 另见 `CREATE FUNCTION `__, `ALTER FUNCTION `__, `DROP PROCEDURE `__, `DROP ROUTINE `__