DROP FUNCTION

说明

删除一个函数

语法

drop_function ::=

plsql_function_source ::=

args_list ::=

inout_option ::=

default_value ::=

参数

IF EXISTS

删除函数时,若存在同名函数则进行删除,否则会跳过操作,且会打印NOTICE提示信息

schema

函数所属的模式名

funcname

是要删除的函数名,函数名必须符合标识符的规则。

注解

当没有重载函数时,可以省略参数列表,直接 DROP FUNCTION funcname 即可; 但是存在重载函数时,删除函数必须带参数列表。

argname

参数的名字。请注意DROP FUNCTION实际上并不注意参数的名字,因为判断函数的身份只需要输入参数的数据类型。

IN|OUT|INOUT|IN OUT

IN表示该参数是输入参数。

OUT表示该参数是输出参数。

INOUT|IN OUT表示该参数是输入输出参数。

注意DROP FUNCTION实际上不注意IN|OUT|INOUT|IN OUT参数,只需输入datatype参数

就足够了。

datatype

函数的参数类型。

RESTRICT|CASCADE|CASCADE CONSTRAINTS

  • RESTRICT确保只有不存在依赖关系才可以被删除。
  • CASCADE|CASCADE CONSTRAINTS强制删除函数,并删除任何与本函数有依赖性的数据库对象。

默认为RESTRICT

NOCOPY

只做了语法上兼容,实际并未做任何处理。

IN | OUT | INOUT | IN OUT

参数输入/输出类型,缺省则为 IN

default_value

为该参数声明一个默认值

示例

示例1: 删除一个函数

--  清理环境
DROP FUNCTION func1() CASCADE;
DROP FUNCTION func1(INT, VARCHAR) CASCADE;
DROP FUNCTION func1(INT, INT) CASCADE;


--  创建函数
CREATE FUNCTION func1(pa INT, pb INT) RETURN INT AS
BEGIN
    RETURN pa + pb;
END;
/


--  删除函数
--  参数个数不匹配,删除失败
DROP FUNCTION func1();
ERROR, RemoveFunction:找不到指定函数,不存在 function FUNC1() 


--  删除函数
--  参数类型不匹配,删除失败
DROP FUNCTION func1(INT, VARCHAR);
ERROR, RemoveFunction:找不到指定函数,不存在 function FUNC1(integer, character varying) 


--  删除函数
DROP FUNCTION func1(INT, INT);

-- 函数不存在时,删除函数
-- 使用 IF EXISTS 时,跳过操作,不报错
DROP FUNCTION IF EXISTS func1(INT, INT);

-- 不使用 IF EXISTS 时,语句报错
DROP FUNCTION func1(INT, INT);
ERROR, RemoveFunction:找不到指定函数,不存在 function FUNC1(integer, integer)