カテゴリ:

ユーザー定義関数、外部関数、およびストアドプロシージャ用の DDL

ALTER PROCEDURE

既存のストアドプロシージャのプロパティを変更します。現在、サポートされている操作は、ストアドプロシージャの名前の変更、またはストアドプロシージャのコメントの追加/上書き/削除のみです。ストアドプロシージャに他の変更を加える必要がある場合は、代わりに DROP PROCEDURE を使用してから、ストアドプロシージャを再作成してください。

こちらもご参照ください。

CREATE PROCEDUREDROP PROCEDURESHOW PROCEDURESDESCRIBE PROCEDURE

構文

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET COMMENT = '<string_literal>'

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }

パラメーター

名前

変更するストアドプロシージャの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

引数データ型 [ , ... ]

ストアドプロシージャに引数がある場合、その引数のデータ型を指定します。ストアドプロシージャが名前のオーバーロードをサポートしており(つまり、同じスキーマ内の2つのストアドプロシージャに同じ名前を付けることができる)、引数タイプを使用して、変更するプロシージャを識別するため、引数タイプが必要です。

RENAME TO 新しい名前

ストアドプロシージャの新しい識別子を指定します。識別子と既存の引数データ型の組み合わせは、スキーマに対して一意である必要があります。

詳細については、 識別子の要件 をご参照ください。

オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。

SET ...

COMMENT = '文字列リテラル'

ストアドプロシージャのコメントを追加するか、既存のコメントを上書きします。指定した値は、 SHOW PROCEDURES の出力の DESCRIPTION 列に表示されます。

UNSET ...

ストアドプロシージャの設定を解除するプロパティを指定します。これにより、プロパティがデフォルトにリセットされます。

現在、設定を解除できるプロパティは COMMENT のみです。これにより、プロシージャのコメントがあれば削除されます。

EXECUTE AS

ストアドプロシージャは、所有者の権限(「所有者の権利」ストアドプロシージャ)または呼び出し元の権限(「呼び出し元の権利」ストアドプロシージャ)で実行できます。ステートメント ALTER PROCEDURE ... EXECUTE AS CALLER を実行すると、その後、プロシージャが呼び出されるときに、呼び出し元の権利プロシージャとして実行されます。ステートメント ALTER PROCEDURE ... EXECUTE AS OWNER を実行すると、その後、プロシージャは所有者の権利プロシージャとして実行されます。

使用上の注意

  • ストアドプロシージャをマネージドアクセススキーマに(ALTER PROCEDURE ... RENAME TO 構文を使用して)移動することは、ストアドプロシージャの所有者(つまり、ストアドプロシージャの OWNERSHIP 権限を持つロール)がターゲットスキーマも所有している場合を 除き、禁止されています。

  • メタデータについて。

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

ストアドプロシージャの名前を procedure1 から procedure2 に変更します。

ALTER PROCEDURE IF EXISTS procedure1(FLOAT) RENAME TO procedure2;