openGauss SQL语法:ALTER FUNCTION


风晓
风晓 2024-01-15 09:10:06 51810 赞同 0 反对 0
分类: 资源 标签: 国产数据库
openGauss SQL语法:ALTER FUNCTION

ALTER FUNCTION

功能描述

修改自定义函数的属性。

注意事项

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

  • 如果函数中涉及对临时表相关的操作,则无法使用ALTER FUNCTION。

  • 修改函数的所有者或修改函数的模式,当前用户必须是该函数的所有者或者系统管理员,且该用户是新所有者角色的成员。

  • 只有系统管理员和初始化用户可以将function的schema修改成public。

语法格式

  • 修改自定义函数的附加参数。

    ALTER FUNCTION function_name ( [ { [ argname ] [ argmode ] 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}
    | COMMENT 'text'
  • 修改自定义函数的名称。

    ALTER FUNCTION funname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
    RENAME TO new_name;
  • 修改自定义函数的所属者。

    ALTER FUNCTION funname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
    OWNER TO new_owner;
  • 修改自定义函数的模式。

    ALTER FUNCTION funname ( [ { [ argname ] [ argmode ] argtype} [, ...] ] )
    SET SCHEMA new_schema;

参数说明

  • 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结果。

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

  • IMMUTABLE

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

  • STABLE

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

  • VOLATILE

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

  • 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

    • DEFAULT

    • OFF

    • RESET

    • value

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

      取值范围:字符串

      指定默认值。

    • from current

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

  • new_name

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

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

  • new_owner

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

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

  • new_schema

    函数的新模式。

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

  • COMMENT 'text'

    修改函数对象的注释。

示例

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
--定义函数为SQL查询。openGauss=# CREATE FUNCTION func_add_sql(integer, integer) RETURNS integerAS 'select $1 + $2;'LANGUAGE SQLIMMUTABLERETURNS NULL ON NULL INPUT;
--利用参数名用 PL/pgSQL 自增一个整数。openGauss=# CREATE OR REPLACE FUNCTION func_increment_plsql(i integer) RETURNS integer AS $$BEGINRETURN i + 1;END;$$ LANGUAGE plpgsql;
--返回RECORD类型openGauss=# CREATE OR REPLACE FUNCTION func_increment_sql(i int, out result_1 bigint, out result_2 bigint)returns SETOF RECORDas $$beginresult_1 = i + 1;result_2 = i * 10;return next;end;$$language plpgsql;
--返回一个包含多个输出参数的记录。openGauss=# CREATE FUNCTION func_dup_sql(in int, out f1 int, out f2 text)AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$LANGUAGE SQL;
openGauss=# SELECT * FROM func_dup_sql(42);
--计算两个整数的和,并返回结果。如果输入为null,则返回null。openGauss=# CREATE FUNCTION func_add_sql2(num1 integer, num2 integer) RETURN integerASBEGINRETURN num1 + num2;END;/--修改函数func_add_sql2的执行规则为IMMUTABLE,即参数不变时返回相同结果。openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) IMMUTABLE;
--将函数func_add_sql2的名称修改为add_two_number。openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) RENAME TO add_two_number;
--将函数add_two_number的属者改为omm。openGauss=# ALTER FUNCTION add_two_number(INTEGER, INTEGER) OWNER TO omm;
--删除函数。openGauss=# DROP FUNCTION add_two_number;openGauss=# DROP FUNCTION func_increment_sql;openGauss=# DROP FUNCTION func_dup_sql;openGauss=# DROP FUNCTION func_increment_plsql;openGauss=# DROP FUNCTION func_add_sql;

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
桌面通用(全架构)【在双系统环境下隐藏Windows启动菜单】操作指南  1554
银河麒麟桌面操作系统V10(SP1)2203-如何进行远程桌面互访?  1533
银河麒麟桌面操作系统【保留数据盘重装系统】  1486
麒麟系统各种原因开不了机解决(合集)  1212
统信桌面专业版【手动分区安装UOS系统】介绍  634
银河麒麟桌面操作系统 V10-SP1 双系统安装 efi 分区问题  596
统信系统安装(合集)  563
桌面通用(全架构)【rpm包转成deb包】操作方法  488
统启动异常几种类型(initramfs 模式)  466
最近下载排行榜
桌面通用(全架构)【在双系统环境下隐藏Windows启动菜单】操作指南 0
银河麒麟桌面操作系统V10(SP1)2203-如何进行远程桌面互访? 0
银河麒麟桌面操作系统【保留数据盘重装系统】 0
麒麟系统各种原因开不了机解决(合集) 0
统信桌面专业版【手动分区安装UOS系统】介绍 0
银河麒麟桌面操作系统 V10-SP1 双系统安装 efi 分区问题 0
统信系统安装(合集) 0
桌面通用(全架构)【rpm包转成deb包】操作方法 0
统启动异常几种类型(initramfs 模式) 0
作者收入月榜
1

prtyaa 收益393.72元

2

zlj141319 收益220.97元

3

1843880570 收益214.2元

4

IT-feng 收益213.03元

5

风晓 收益208.24元

6

777 收益172.82元

7

Fhawking 收益106.6元

8

信创来了 收益105.89元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!