Procedure Dialog

プロシージャ ダイアログを使用して、プロシージャを作成します。プロシージャはPostgreSQLv11+およびEDBPostgresAdvancedServerでサポートされています。 Procedure ダイアログでは、CREATEPROCEDUREコマンドのオプションを実装できます。

プロシージャ ダイアログは、 一般 、 定義 、 コード 、 オプション 、 引数 、 パラメーター 、および セキュリティ のダイアログタブを使用してプロシージャーの開発を編成します。 SQL タブには、ダイアログ選択によって生成されたSQLコードが表示されます。

プロシージャーダイアログの一般タブ

[ General ]タブのフィールドを使用して、プロシージャを識別します。

  • Name フィールドを使用して、プロシージャの説明的な名前を追加します。名前は pgAdmin ツリーコントロールに表示されます。

  • 所有者 の横にあるドロップダウンリストボックスを使用して、ロールを選択します。

  • スキーマ フィールドのドロップダウンリストボックスから、プロシージャが存在するスキーマの名前を選択します。

  • 手順に関するメモを コメント フィールドに保存します。

[ 定義 ]タブをクリックして続行します。

プロシージャーダイアログ定義タブ

[ 定義 ]タブのフィールドを使用して、プロシージャを定義します。

  • 言語 の横にあるドロップダウンリストボックスを使用して、言語を選択します。デフォルトは edbspl です。

  • Arguments セクションのフィールドを使用して、引数を定義します。 Add をクリックして、引数のパラメーターと値を設定します。

  • データ型 の横にあるドロップダウンリストボックスを使用して、データ型を選択します。

  • モード の横にあるドロップダウンリストボックスを使用して、モードを選択します。入力パラメーターに IN を選択します。出力パラメーターに OUT を選択します。入力パラメーターと出力パラメーターの両方に INOUT を選択します。または、 VARIADIC を選択してVARIADICパラメーターを指定します。

  • 引数名 フィールドに引数の名前を書き込みます。

  • デフォルト値 フィールドに引数のデフォルト値を指定します。

Add をクリックして別の引数を定義します。引数を破棄するには、行の左側にあるごみ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。

[ コード ]タブをクリックして続行します。

プロシージャーダイアログのコードタブ
  • Code フィールドを使用して、プロシージャが呼び出されたときに実行されるコードを指定します。

[ オプション ]タブをクリックして続行します。

プロシージャーダイアログのオプションタブ

[ オプション ]タブのフィールドを使用して、プロシージャの動作を説明または変更します。

  • ボラティリティ の下のドロップダウンリストボックスを使用して、次のいずれかを選択します。 VOLATILE はデフォルト値です。

    • VOLATILE は、1回のテーブルスキャン内でも値が変更される可能性があるため、最適化を行わないことを示します。

    • STABLE は、プロシージャーがデータベースを変更できないこと、および単一のテーブルスキャン内では、同じ引数値に対して一貫して同じ結果を返すが、その結果はSQLステートメント全体で異なる可能性があることを示します。

    • IMMUTABLE は、プロシージャーがデータベースを変更できず、同じ引数値が指定された場合に常に同じ結果を返すことを示します。

  • Strict? スイッチを移動して、引数のいずれかがNULLの場合にプロシージャが常にNULLを返すかどうかを示します。 Yes の場合、NULL引数があるとプロシージャは実行されません。代わりにNULL結果が自動的に想定されます。デフォルトは いいえ です。

  • Securityofdefiner? スイッチを移動して、プロシージャを作成したユーザーの権限で実行することを指定します。デフォルトは いいえ です。

  • 見積もりコスト フィールドを使用して、プロシージャーの見積もり実行コストを表す正の数をcpu_operator_cost単位で指定します。プロシージャーがセットを返す場合、これは返される行ごとのコストです。

  • Leakproof? スイッチを移動して、プロシージャに副作用があるかどうかを示します。戻り値以外に引数に関する情報は明らかにしません。デフォルトは いいえ です。

[ パラメーター ]タブをクリックして続行します。

プロシージャーダイアログのパラメータータブ

[ パラメーター ]タブのフィールドを使用して、プロシージャが呼び出されたときに適用される設定を指定します。

  • パラメーター パネルの パラメーター名 の横にあるドロップダウンリストボックスを使用して、パラメーターを選択します。

  • Add ボタンをクリックして、変数をテーブルの Name フィールドに追加します。

  • Value フィールドを使用して、選択した変数に関連付けられる値を指定します。このフィールドは状況依存です。

[ セキュリティ ]タブをクリックして続行します。

プロシージャーダイアログのセキュリティタブ

[ セキュリティ ]タブを使用して、特権を割り当て、セキュリティラベルを定義します。

Privileges パネルを使用して、プロシージャーの実行特権をロールに割り当てます。

  • Grantee フィールドのドロップダウンリストボックスからロールの名前を選択します。

  • Privileges フィールド内をクリックします。1つ以上の特権の左側にあるチェックボックスをオンにして、選択した特権を指定されたユーザーに付与します。

  • 特権を付与するためのデフォルトの付与者である現在のユーザーが Grantor フィールドに表示されます。

[ 追加 ]をクリックして、追加の特権を割り当てます。特権を破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。

SecurityLabels パネルを使用して、プロシージャに適用されるセキュリティラベルを定義します。[ 追加 ]をクリックして、各セキュリティラベルの選択を追加します。

  • Provider フィールドにセキュリティラベルプロバイダーを指定します。名前付きプロバイダーをロードし、提案されたラベル付け操作に同意する必要があります。

  • セキュリティラベル フィールドにセキュリティラベルを指定します。特定のラベルの意味は、ラベルプロバイダーの裁量にあります。PostgreSQLは、ラベルプロバイダーがセキュリティラベルを解釈する必要があるかどうか、またはどのように解釈するかについて制限を設けていません。それらを格納するメカニズムを提供するだけです。

[ Add ]をクリックして、追加のセキュリティラベルを割り当てます。セキュリティラベルを破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。

SQL タブをクリックして続行します。

Procedure ダイアログに入力すると、SQLコマンドが生成されます(以下の例を参照)。確認には SQL タブを使用します。再アクセスするかタブを切り替えて、SQLコマンドを変更します。

例

以下は、[ プロシージャ ]ダイアログでの選択によって生成されたsqlコマンドの例です。

プロシージャーダイアログのSQLタブ

この例では、 emp という名前のテーブルから従業員のリストを返すプロシージャの作成を示しています。プロシージャーはSECURITYDEFINERであり、プロシージャーを定義したロールの特権で実行されます。

  • Info ボタン(i)をクリックして、オンラインヘルプにアクセスします。

  • Save ボタンをクリックして作業を保存します。

  • 作業を保存せずに終了するには、 閉じる ボタンをクリックします。

  • Reset ボタンをクリックして、構成パラメーターを復元します。