文档首页 > > 开发指南> SQL参考> SQL语法> ALTER FUNCTION

ALTER FUNCTION

分享
更新时间: 2019/07/22 GMT+08:00

功能描述

修改自定义函数的属性。

注意事项

只有该函数的所有者,才有权限执行该命令,系统管理员默认拥有该权限。如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。

语法格式

  • 修改自定义函数的附加参数。
    ALTER FUNCTION function_name ( [ { [ argmode ] [ argname ] argtype} [, ...] ] )
        action [ ... ] [ RESTRICT ];

    其中附加参数action子句语法为。

    {CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
     | {IMMUTABLE | STABLE | VOLATILE}
     | {SHIPPABLE | NOT SHIPPABLE}
     | {NOT FENCED | FENCED}
     | [ NOT ] LEAKPROOF
     | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }
     | AUTHID { DEFINER | CURRENT_USER }
     | COST execution_cost
     | ROWS result_rows
     | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT}
     | RESET {configuration_parameter | ALL}
  • 修改自定义函数的名字。
    ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] )
        RENAME TO new_name;
  • 修改自定义函数的所属者。
    ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] )
        OWNER TO new_owner;
  • 修改自定义函数的模式。
    ALTER FUNCTION funname ( [ { [ argmode ] [ argname ] argtype} [, ...] ] )
        SET SCHEMA new_schema;

参数说明

  • function_name

    要修改的函数名称。

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

  • argmode

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

    取值范围:IN/OUT/IN OUT

  • argname

    参数名称。

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

  • argtype

    参数类型。

    取值范围:有效的类型,请参考数据类型

  • CALLED ON NULL INPUT

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

  • RETURNS NULL ON NULL INPUT

    STRICT

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

    RETURNS NULL ON NULL INPUT和STRICT的功能相同。

  • IMMUTABLE

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

  • STABLE

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

  • VOLATILE

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

  • SHIPPABLE
  • NOT SHIPPABLE

    表示该函数是否可以下推到DN上执行。

    对于IMMUTABLE类型的函数,函数始终可以下推到DN上执行。

    对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数可以下推到DN执行。

  • LEAKPROOF

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

  • EXTERNAL

    (可选)目的是和SQL兼容,这个特性适合于所有函数,而不仅是外部函数

  • 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为单位。

    取值范围:正数

  • ROWS result_rows

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

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

  • configuration_parameter
    • value

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

      取值范围:字符串

      • DEFAULT
      • OFF
      • RESET

      指定默认值。

    • from current

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

  • new_name

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

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

  • new_owner

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

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

  • new_schema

    函数的新模式。

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

示例

请参见CREATE FUNCTION的示例

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区