ALTER PROCEDURE

ALTER PROCEDURE —更改过程的定义

Synopsis

ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    action [ ... ] [ RESTRICT ]
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    SET SCHEMA new_schema
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    DEPENDS ON EXTENSION extension_name

where action is one of:

    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    SET configuration_parameter { TO | = } { value | DEFAULT }
    SET configuration_parameter FROM CURRENT
    RESET configuration_parameter
    RESET ALL

Description

ALTER PROCEDURE更改过程的定义。

您必须拥有使用ALTER PROCEDURE的过程。要更改过程的架构,您还必须对新架构具有CREATE特权。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对过程的模式具有CREATE特权。 (这些限制规定,更改所有者不会通过删除并重新创建过程来做您做不到的任何事情.但是,超级用户仍然可以更改任何过程的所有权.)

Parameters

有关允许的参数名称和值的更多信息,请参见SETChapter 19

Examples

用两个类型为integer的参数将过程insert_data重命名为insert_record

ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;

要将具有两个参数integer的过程insert_data的所有者更改为joe

ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe;

要将具有两个参数integer的过程insert_data的模式更改为accounting

ALTER PROCEDURE insert_data(integer, integer) SET SCHEMA accounting;

要将过程insert_data(integer, integer)标记为依赖于 extensionsmyext

ALTER PROCEDURE insert_data(integer, integer) DEPENDS ON EXTENSION myext;

要调整为过程自动设置的搜索路径:

ALTER PROCEDURE check_password(text) SET search_path = admin, pg_temp;

要为某个过程禁用search_path的自动设置,请执行以下操作:

ALTER PROCEDURE check_password(text) RESET search_path;

现在,该过程将使用其调用者使用的任何搜索路径执行。

Compatibility

该语句与 SQL 标准中的ALTER PROCEDURE语句部分兼容。该标准允许修改过程的更多属性,但不提供重命名过程,使过程成为安全定义程序,将配置参数值附加到过程或更改过程的所有者,模式或易变性的功能。 。该标准还需要RESTRICT关键字,该关键字在 PostgreSQL 中是可选的。

See Also

CREATE PROCEDURE, DROP PROCEDURE, ALTER FUNCTION, ALTER ROUTINE

上一章 首页 下一章