ALTER PROCEDUREは、プロシージャの定義を変更します。
説明
ALTER procedureを使用するプロシージャを所有する必要があります。 プロシージャのスキーマを変更するには、新しいスキーマに対するCREATE権限も必要です。 所有者を変更するには、新しい所有ロールの直接または間接のメンバーである必要があります。また、そのロールはプロシージャのスキーマに対するCREATE権限を持つ必要があります。 (これらの制限により、所有者を変更しても、手順を削除して再作成できないことは何もできません。 ただし、スーパーユーザーは任意の手順の所有権を変更できます。
概要
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
アクション [ ... ] [制限]
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
new_nameに名前を付ける
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
{new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER} への所有者
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
SET SCHEMA new_schema
ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
[いいえ] 拡張extension_nameに依存
アクションは次のいずれかです。
[外部] SECURITY INVOKER | [外部] SECURITY DEFINER
SET configuration_parameter { TO | = } { value | DEFAULT}
SET configuration_parameter FROM CURRENT
RESET configuration_parameter
リセットすべて パラメーター
name: 既存のプロシージャの名前 (オプションでスキーマ修飾) 。 引数リストを指定しない場合、名前はスキーマ内で一意である必要があります。
argmode: 引数のモード: IN、OUT、INOUT、またはVARIADIC。 省略した場合、デフォルトはINです。
argname: 引数の名前。 ALTER PROCEDUREは、引数のデータ型のみがプロシージャのIDを決定するために使用されるため、実際には引数名に注意を払わないことに注意してください。
argtype: プロシージャの引数のデータ型 (必要に応じてスキーマ修飾) (存在する場合) 。 引数データ型を使用してプロシージャを検索する方法の詳細については、「DROP PROCEDURE」をご参照ください。
new_name: プロシージャの新しい名前。
new_owner: プロシージャの新しい所有者。 プロシージャがSECURITY DEFINERとマークされている場合、その後、新しい所有者として実行されます。
new_schema: プロシージャの新しいスキーマです。
extension_name: このフォームは、拡張子に依存するものとしてプロシージャをマークします。
[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標準に準拠するため無視されます。
例
typeintegertoinsert_recordの2つの引数でprocedureinsert_datawithの名前を変更するには:
ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;整数型の2つの引数を持つプロシージャinsert_dataの所有者をjoeに変更するには:
ALTER PROCEDURE insert_data(integer, integer) 所有者TO joe;整数型の2つの引数を持つプロシージャinsert_dataのスキーマをアカウンティングに変更するには:
ALTER PROCEDURE insert_data (整数、整数) SET SCHEMAアカウンティング;プロシージャinsert_data(integer, integer) を拡張子myextに依存するものとしてマークするには:
ALTER PROCEDURE insert_data(integer, integer) は拡張myextに依存します。プロシージャに自動的に設定される検索パスを調整するには:
ALTER PROCEDURE check_password (テキスト) SET search_path = admin、pg_temp;プロシージャのsearch_pathの自動設定を無効にするには:
ALTER PROCEDURE check_password (テキスト) RESET search_path;この手順は、呼び出し元が使用する検索パスを使用して実行されます。