删除函数。

语法

DROP FUNCTION [ IF EXISTS ] name
  [ ([ [ argmode ] [ argname ] argtype ] [, ...]) ]
  [ CASCADE | RESTRICT ]

说明

DROP FUNCTION 可删除现有函数的定义。要执行此命令,您必须是超级用户或者是函数的所有者。如果这是重载函数,则必须指定函数的所有输入(ININ OUT)参数的数据类型。(该要求与 Oracle 数据库不兼容。在 Oracle 中,仅指定函数名称。PolarDB PostgreSQL版(兼容Oracle)允许重载函数名称,因此在PolarDB PostgreSQL版(兼容Oracle)中,重载函数的 DROP FUNCTION 命令需要使用输入参数数据类型给定的函数签名。)

使用 IFEXISTSCASCADERESTRICT 与 Oracle 数据库不兼容,仅由PolarDB PostgreSQL版(兼容Oracle)使用。

参数

参数说明
IF EXISTS如果函数不存在,将不引发错误。在这种情况下,会发出通知。
name现有函数的名称(可能是 schema 限定的)。
argmode参数的模式:ININOUTOUT。如果省略,则默认值为 IN。请注意,DROP FUNCTION 实际上并不受 OUT 参数影响,因为只需要输入参数即可确定函数的身份。因此,仅列出 ININOUT 参数即可。(指定 argmode 与 Oracle 数据库不兼容,它仅适用于PolarDB PostgreSQL版(兼容Oracle)。)
argname参数的名称。请注意,DROP FUNCTION 实际上并不受参数名称影响,因为只需要参数数据类型即可确定函数的身份。(指定 argname 与 Oracle 数据库不兼容,它仅适用于PolarDB PostgreSQL版(兼容Oracle)。)
argtype函数参数的数据类型。(指定 argtype 与 Oracle 数据库不兼容,它仅适用于PolarDB PostgreSQL版(兼容Oracle)。)
CASCADE自动删除依赖于函数的对象(如运算符或触发器),并就此删除依赖于这些对象的所有对象。
RESTRICT如果存在依赖于函数的对象,则拒绝删除函数。这是默认值。

示例

以下命令会删除 emp_comp 函数。

DROP FUNCTION emp_comp(NUMBER, NUMBER);