============= ALTER ROUTINE ============= .. container:: refentry :name: SQL-ALTERROUTINE .. container:: titlepage .. container:: refnamediv .. rubric:: ALTER ROUTINE :name: alter-routine ALTER ROUTINE — 更改一个例程的定义 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] action [ ... ] [ RESTRICT ] ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] RENAME TO new_name ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] OWNER TO { new_owner | CURRENT_USER | SESSION_USER } ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] SET SCHEMA new_schema ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] DEPENDS ON EXTENSION extension_name 其中action是下列之一: IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COST execution_cost ROWS result_rows SET configuration_parameter { TO | = } { value | DEFAULT } SET configuration_parameter FROM CURRENT RESET configuration_parameter RESET ALL .. container:: refsect1 :name: id-1.9.3.27.5 .. rubric:: 描述 :name: 描述 ``ALTER ROUTINE``\ 更改一个例程的定义,它可以是聚集函数、普通函数或者过程。参数的描述、更多的例子以及进一步的细节请参考\ `ALTER AGGREGATE `__\ 、\ `ALTER FUNCTION `__\ 以及\ `ALTER PROCEDURE `__\ 。 .. container:: refsect1 :name: id-1.9.3.27.6 .. rubric:: 示例 :name: 示例 将类型\ ``integer``\ 的例程\ ``foo``\ 重命名为\ ``foobar``\ : .. code:: programlisting ALTER ROUTINE foo(integer) RENAME TO foobar; 不管\ ``foo``\ 是聚集、函数还是过程,这个命令都能使用。 .. container:: refsect1 :name: id-1.9.3.27.7 .. rubric:: 兼容性 :name: 兼容性 这个语句与SQL标准中的\ ``ALTER ROUTINE``\ 语句部分兼容。更多细节请参考\ `ALTER FUNCTION `__\ 和\ `ALTER PROCEDURE `__\ 。允许例程名称引用聚集函数是一种PostgreSQL的扩展。 .. container:: refsect1 :name: id-1.9.3.27.8 .. rubric:: 另见 :name: 另见 `ALTER AGGREGATE `__, `ALTER FUNCTION `__, `ALTER PROCEDURE `__, `DROP ROUTINE `__ 注意没有\ ``CREATE ROUTINE``\ 命令。