更新时间:2024-06-03 GMT+08:00

DROP FUNCTION

功能描述

删除一个已存在的函数。

注意事项

  • 如果函数中涉及对临时表的相关操作,则无法使用DROP FUNCTION删除函数。
  • 只有函数的所有者或者被授予了函数DROP权限的用户才能执行DROP FUNCTION命令,系统管理员默认拥有该权限。

语法格式

DROP FUNCTION [ IF EXISTS ] function_name 
[ ( [ {[ argname ] [ argmode ] argtype} [, ...] ] ) [ CASCADE | RESTRICT ] ];

参数说明

  • IF EXISTS

    IF EXISTS表示如果函数存在则执行删除操作,函数不存在也不会报错,只是发出一个notice。

  • function_name

    要删除的函数名称。

    取值范围:已存在的函数名。

  • argmode

    函数参数的模式。

  • argname

    函数参数的名称。

  • argtype

    函数参数的类型

  • CASCADE | RESTRICT
    • CASCADE:级联删除依赖于函数的对象 。
    • RESTRICT:如果有任何依赖对象存在,则拒绝删除该函数(缺省行为)。

示例

  • 删除函数可省略参数列表
    --创建函数。
    gaussdb=# CREATE FUNCTION func_test(varchar) RETURN VARCHAR AS
    BEGIN 
        RETURN $1||_'test';
    END;
    /
    
    --删除函数。
    gaussdb=# DROP FUNCTION func_test;
  • 删除存在同名的函数
    如果存在同名函数,删除时需加上参数列表,否则报错。
    --创建函数。
    gaussdb=# CREATE FUNCTION func_add(int) RETURNS int AS $$
    BEGIN 
        RETURN $1+10;
    END;
    $$ LANGUAGE PLPGSQL;
    
    --重载函数func_add。
    gaussdb=# CREATE FUNCTION func_add(int,int) RETURNS int AS $$
    BEGIN 
        RETURN $1+$2;
    END;
    $$ LANGUAGE PLPGSQL;
    
    --删除函数。
    gaussdb=# DROP FUNCTION func_add(int);
    gaussdb=# DROP FUNCTION func_add(int,int);