ALTER PROCEDURE — 變更程序的定義
ALTER PROCEDUREname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ]action
[ ... ] [ RESTRICT ] ALTER PROCEDUREname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] RENAME TOnew_name
ALTER PROCEDUREname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER PROCEDUREname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] SET SCHEMAnew_schema
ALTER PROCEDUREname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONextension_name
whereaction
is one of: [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER SETconfiguration_parameter
{ TO | = } {value
| DEFAULT } SETconfiguration_parameter
FROM CURRENT RESETconfiguration_parameter
RESET ALL
ALTER PROCEDURE
變更程序的定義。
您必須擁有該程序才能使用 ALTER PROCEDURE
。若要變更程序的綱要,您也必須在新的綱要上擁有 CREATE
權限。若要變更擁有者,您必須能夠 SET ROLE
為新的擁有角色,並且該角色必須在程序的綱要上擁有 CREATE
權限。(這些限制確保變更擁有者不會執行任何您無法透過捨棄和重新建立程序來完成的事情。然而,超級使用者仍然可以變更任何程序的所有權。)
name
現有程序的名稱(可選擇包含綱要)。如果未指定引數清單,則名稱在其綱要中必須是唯一的。
argmode
引數的模式:IN
、OUT
、INOUT
或 VARIADIC
。如果省略,則預設為 IN
。
argname
引數的名稱。請注意,ALTER PROCEDURE
實際上並不關注引數名稱,因為只有引數資料類型用於確定程序的識別。
argtype
程序的引數的資料類型(可選擇包含綱要),如果有的話。有關如何使用引數資料類型來查找程序的詳細資訊,請參閱 DROP PROCEDURE。
new_name
程序的新名稱。
new_owner
程序的新擁有者。請注意,如果程序標記為 SECURITY DEFINER
,它將隨後以新擁有者的身分執行。
new_schema
程序的新綱要。
extension_name
此形式將程序標記為依賴於擴充功能,如果指定了 NO
,則不再依賴於該擴充功能。標記為依賴於擴充功能的程序會在刪除擴充功能時刪除,即使未指定 cascade 也是如此。程序可以依賴於多個擴充功能,並且會在刪除其中任何一個擴充功能時刪除。
[ EXTERNAL ] SECURITY INVOKER
[ EXTERNAL ] SECURITY DEFINER
變更程序是否為安全性定義者。關鍵字 EXTERNAL
會為了 SQL 一致性而被忽略。有關此功能的更多資訊,請參閱 CREATE PROCEDURE。
configuration_parameter
value
新增或變更在呼叫程序時要指派給組態參數的指派。如果 value
為 DEFAULT
,或等效地使用 RESET
,則會移除程序本機設定,以便程序使用其環境中存在的值執行。使用 RESET ALL
清除所有程序本機設定。SET FROM CURRENT
將執行 ALTER PROCEDURE
時的參數值儲存為進入程序時要套用的值。
RESTRICT
為了符合 SQL 標準而被忽略。
若要將具有兩個 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)
標記為依賴於擴充功能 myext
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;
該程序現在將使用其呼叫者使用的任何搜尋路徑執行。
此陳述式與 SQL 標準中的 ALTER PROCEDURE
陳述式部分相容。該標準允許修改程序的更多屬性,但不提供重新命名程序、使程序成為安全性定義者、將組態參數值附加到程序或變更程序的所有者、綱要或揮發性的能力。該標準還需要 RESTRICT
關鍵字,該關鍵字在 PostgreSQL 中是可選的。
如果您在文件中發現任何不正確、與您特定功能的使用經驗不符或需要進一步澄清的地方,請使用 此表單 回報文件問題。