ALTER FUNCTION

    注意事项

    只有函数的所有者或者被授予了函数ALTER权限的用户才能执行ALTER FUNCTION命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束:

    • 如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。
    • 修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系统管理员,且该用户是新所有者角色的成员。
    • 只有系统管理员和初始化用户可以将function的schema修改成public。
    • 重命名函数时,不能与当前模式下已经存在的synonym产生命名冲突。
    • 修改函数的模式时,不能与新模式下已经存在的synonym产生命名冲突。
    • 仅有初始化用户或者创建该存储过程的用户可以修改存储过程为定义者权限的存储过程。
    • 打开三权分立时,即使是sysadmin权限用户,也需要校验用户的组权限。
    • 修改自定义函数的名称。

    • 修改自定义函数的所属者。

    • 修改自定义函数的模式。

    参数说明

    • function_name

      要修改的函数名称。

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

    • argmode

      标识该参数是输入、输出参数。

      取值范围:IN/OUT/INOUT/VARIADIC。

    • argname

      参数名称。

      取值范围:字符串,符合标识符命名规范。

    • argtype

      函数参数的类型。

    • CALLED ON NULL INPUT

      表明该函数的某些参数是NULL的时候可以按照正常的方式调用。缺省时与指定此参数的作用相同。

    • RETURNS NULL ON NULL INPUT

      STRICT

      STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,则如果存在NULL参数时不会执行该函数;而只是自动假设一个NULL结果。

    • IMMUTABLE

      表示该函数在给出同样的参数值时总是返回同样的结果。

    • STABLE

      表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。

    • VOLATILE

      表示该函数值可以在一次表扫描内改变,不会做任何优化。

    • LEAKPROOF

      表示该函数没有副作用,指出参数只包括返回值。LEAKPROOF只能由系统管理员设置。

    • SECURITY INVOKER

      AUTHID CURRENT_USER

      表明该函数将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。

      SECURITY INVOKER和AUTHID CURRENT_USER的功能相同。

    • SECURITY DEFINER

      AUTHID DEFINER

      声明该函数将以创建它的用户的权限执行。

      AUTHID DEFINER和SECURITY DEFINER的功能相同。

    • COST execution_cost

      用来估计函数的执行成本。

      execution_cost以cpu_operator_cost为单位。

      取值范围:正数。

    • 估计函数返回的行数。用于函数返回的是一个集合。

      取值范围:正数,默认值是1000行。

    • configuration_parameter

      • value

        把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。

        取值范围:字符串。

        • DEFAULT
        • OFF
        • RESET

        指定默认值。

      • from current

        取当前会话中的值设置为configuration_parameter的值。

    • new_name

      函数的新名称。要修改函数的所属模式,必须拥有新模式的CREATE权限。

      取值范围:字符串,符合标识符命名规范。

    • new_owner

      函数的新所有者。要修改函数的所有者,新所有者必须拥有该函数所属模式的CREATE权限。注意:仅有初始化用户才可将函数的owner设置为初始化用户。

      取值范围:已存在的用户角色。

    • new_schema

      函数的新模式。

      取值范围:已存在的模式。

    请参见CREATE FUNCTION的。

    相关链接

    DROP FUNCTION