DROP FUNCTION — 移除一个函数
DROP FUNCTION [ IF EXISTS ]name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
   DROP FUNCTION移除一个已有函数
   的定义。要执行这个命令用户必须是该函数的拥有者。该函数的参数
   类型必须被指定,因为多个不同的函数可能会具有相同的函数名和不
   同的参数列表。
  
IF EXISTS如果该函数不存在则不要抛出一个错误,而是发出一个提示。
name一个现有函数的名称(可以是模式限定的)。如果没有指定参数列表,则名称在其所在的方案中必须唯一。
argmode
      一个参数的模式:IN、OUT、
      INOUT或者VARIADIC。如果被忽略,
      则默认为IN。注意
      DROP FUNCTION并不真正关心
      OUT参数,因为决定函数的身份时只需要输入参数。
      因此列出IN、INOUT和
      VARIADIC参数足以。
     
argname
      一个参数的名称。注意
      DROP FUNCTION并不真正关心
      参数名称,因为决定函数的身份时只需要参数的数据类型。
     
argtype如果函数有参数,这是函数参数的数据类型(可以是模式限定的)。
CASCADE自动删除依赖于该函数的对象(例如操作符和触发器),然后删除所有 依赖于那些对象的对象(见Section 5.13)。
RESTRICT如果有任何对象依赖于该函数,则拒绝删除它。这是默认值。
这个命令移除平方根函数:
DROP FUNCTION sqrt(integer);
在一个命令中删除多个函数:
DROP FUNCTION sqrt(integer), sqrt(bigint);
如果函数名在其所在的方案中唯一,则引用它时不用指出参数列表:
DROP FUNCTION update_employee_salaries;
注意这和
DROP FUNCTION update_employee_salaries();
是不同的,后者引用的是零个参数的函数,而前者引用的是可能有任意个数参数的函数,包括零个参数,只要该函数的名称是唯一的。
   SQL 标准中定义了一个
   DROP FUNCTION语句,
   但是它与这个命令不兼容。