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
時不再依賴於擴充套件。被標記為依賴於擴充套件的儲存過程在擴充套件被刪除時將被刪除,即使沒有指定級聯。一個儲存過程可以依賴於多個擴充套件,並在任何一個擴充套件被刪除時被刪除。
[ 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;
將具有兩個 integer
型別引數的儲存過程 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 中是可選的。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步闡明的內容,請使用 此表單 報告文件問題。