Procedure Dialog

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

プロシージャ ダイアログは、次のダイアログタブを使用してプロシージャの開発を整理します。 General 、 Definition 、 Code 、 Options 、 Arguments 、 Parameters 、および Security 。 SQL タブには、ダイアログ選択によって生成されたSQLコードが表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例

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

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

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

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

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

  • Close ボタンをクリックして、作業を保存せずに終了します。

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