删除函数

语法:

drop_function ::=

参数:

funcname

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

argname

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

IN|OUT|INOUT

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

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

INOUT表示该参数是输入输出参数。

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

就足够了。

datatype

函数的参数类型。

RESTRICT

默认选项,确保只有不存在依赖关系才可以被删除.

CASCADE

强制删除函数,并删除任何与本函数有依赖性的数据库对象。

示例:删除函数

--  清理环境
DROP FUNCTION func(INT);

create or replace function func(i int) 
    return SETOF record as
    TYPE R1 IS RECORD
    (
        a int,
        b int,
        c int
    );
    TYPE R2 IS RECORD(
        a int,
        b numeric,
        c text
    );
    retval1 R1;
    retval2 R2;
BEGIN
    IF i > 10 THEN
        SELECT 5, 10, 15 INTO retval1;
        RETURN NEXT retval1;
        RETURN NEXT retval1;
    ELSE
        SELECT 50, 5::numeric, 'xxx'::text INTO retval2;
        RETURN NEXT retval2;
        RETURN NEXT retval2;
    END IF;
    RETURN;
END;

/

select * from func(1500) AS (a int, b int, c int);
A(int)      |B(int)      |C(int)      |
------------------------------------
5           |10          |15          |
------------------------------------
5           |10          |15          |
总数目:2

--删除过程
DROP FUNCTION func(INT);