VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

ALTER PROCEDURE

功能描述

修改一个自定义存储过程的属性。

注意事项

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

  • 如果存储过程中涉及对临时表相关的操作,则无法使用ALTER PROCEDURE。
  • 修改存储过程的所有者或修改存储过程的模式,当前用户必须是该存储过程的所有者或者系统管理员,且该用户是新所有者角色的成员。
  • 只有系统管理员和初始化用户可以将procedure的schema修改成public。
  • 重命名存储过程时,不能与当前模式下已经存在的synonym产生命名冲突。
  • 修改存储过程的模式时,不能与新模式下已经存在的synonym产生命名冲突。

语法格式

  • 修改自定义存储过程的附加参数。

    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    action [ ... ] [ RESTRICT ];
    

    其中自定义存储过程的附加参数action语法为:

    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    SET configuration_parameter { TO | = } { value | DEFAULT }
    SET configuration_parameter FROM CURRENT
    RESET configuration_parameter
    RESET ALL
    
  • 修改自定义存储过程的名称。

    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name;
    
  • 修改自定义存储过程的所属者。

    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER };
    
  • 修改自定义存储过程的模式。

    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    SET SCHEMA new_schema;
    
  • 修改自定义存储过程的插件。

    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    [ NO ] DEPENDS ON EXTENSION extension_name;
    

参数说明

  • argmode

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

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

  • argname

    参数名称。

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

  • argtype

    存储过程参数的类型。

  • new_name

    存储过程的新名称。要修改存储过程的所属模式,必须拥有新模式的CREATE权限。

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

  • new_owner

    存储过程的新所有者。要修改存储过程的所有者,新所有者必须拥有该存储过程所属模式的CREATE权限。

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

  • new_schema

    存储过程的新模式。

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

  • extension_name

    已安装扩展的名称。

  • EXTERNAL

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

  • SECURITY INVOKER

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

  • SECURITY DEFINER

    声明该存储过程将以创建它的用户的权限执行。

  • configuration_parameter

    • value

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

      取值范围:字符串。

      • DEFAULT
      • OFF
      • RESET
    • DEFAULT

      指定默认值。

    • FROM CURRENT

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

示例

1、创建测试表。

CREATE TABLE EXAMPLE1(COL1 INT);

2、创建存储过程。

CREATE OR REPLACE PROCEDURE EXAMPLE_1150701 (INTIN IN INT, INTOUT OUT INT)
AS
BEGIN
INTOUT := INTIN + 1;
COMMIT;
END;
/

3、修改存储过程的名字。

ALTER PROCEDURE  EXAMPLE_1150701(INTIN IN INT, INTOUT OUT INT) RENAME TO E_1150701;

4、删除存储过程。

DROP PROCEDURE E_1150701;

相关链接

CREATE PROCEDUREDROP PROCEDURE