更新时间:2024-05-07 GMT+08:00

ALTER PACKAGE

功能描述

修改PACKAGE的属性或重编译包。

注意事项

  • 目前仅支持ALTER PACKAGE OWNER功能,系统管理员默认拥有该权限,有以下权限约束:
    • 当前用户必须是该PACKAGE的所有者或者系统管理员,且该用户是新所有者角色的成员。
  • 重编译包需要设置plpgsql_dependency参数。
  • 仅有初始化用户可以修改定义者权限的package的owner。
  • 当打开三权分立时,即使是系统管理员,也必须拥有用户组权限才能修改PACKAGE的owner。
  • 只有初始化用户才能修改package的owner为初始化用户。
  • 三权分立模式下,DEFINER类型package不允许修改属主。非三权分立模式下,仅系统管理员以上权限可以修改package属主。
  • 不允许系统管理员将DEFINER类型的package的属主改为初始用户或运维管理员。

语法格式

  • 修改PACKAGE的所属者。
    ALTER PACKAGE package_name OWNER TO new_owner;
  • 重编译包
    ALTER PACKAGE package_name COMPILE [PACKAGE | BODY | SPECIFICATION];

参数说明

  • package_name

    要修改的PACKAGE名称。

    取值范围:已存在的PACKAGE名,仅支持修改单个PACKAGE。

  • new_owner

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

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

示例

请参见CREATE PACKAGE中示例。

重编译示例:
--开启依赖功能。
gaussdb=# set behavior_compat_options ='plpgsql_dependency';

--创建函数。
gaussdb=# create or replace package test_pkg as
    pkg_var int := 1;
    procedure test_pkg_proc(var int);
end test_pkg;
/

gaussdb=# create or replace package body test_pkg as
    procedure test_pkg_proc(var int)
is
begin
    pkg_var := 1;
end;
end test_pkg;
/

--重编译包。
gaussdb=# alter package test_pkg compile;

相关链接

CREATE PACKAGEDROP PACKAGE