Function Dialog

Function ダイアログを使用して、関数を定義します。ファンクションを削除してから再作成した場合、新しいファンクションは古いエンティティと同じではありません。古い関数を参照する既存のルール、ビュー、トリガーなどを削除する必要があります。

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

ファンクションダイアログの一般タブ

[ 全般 ]タブのフィールドを使用して、機能を識別します。

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

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

  • スキーマ の横にあるドロップダウンリストボックスを使用して、関数を作成するスキーマを選択します。

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

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

ファンクションダイアログ定義タブ

[ 定義 ]タブのフィールドを使用して、関数を定義します。

  • Returntype の横にあるドロップダウンリストボックスを使用して、関数によって返されるデータ型を選択します(ある場合)。

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

  • Arguments のフィールドを使用して、引数を定義します。 追加 アイコン(+)をクリックして、引数のパラメーターと値を設定します。

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

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

    • 引数名 フィールドに引数の名前を入力します。

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

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

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

ファンクションダイアログのコードタブ
  • Code フィールドを使用して、関数が呼び出されたときに実行されるコードを記述します。

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

ファンクションダイアログのオプションタブ

[ オプション ]タブのフィールドを使用して、関数のアクションを説明または変更します。

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

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

    • STABLE は、ファンクションがデータベースを変更できないこと、および1回のテーブルスキャン内で、同じ引数値に対して一貫して同じ結果を返すことを示します。

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

  • ReturnsaSet? スイッチを動かして、関数が複数の行を含むセットを返すかどうかを示します。デフォルトは いいえ です。

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

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

  • Window? スイッチを動かして、関数がプレーン関数ではなくウィンドウ関数であることを示します。デフォルトは いいえ です。これは現在、Cで記述された関数でのみ役立ちます。既存の関数定義を置き換えるときにWINDOW属性を変更することはできません。CREATEFUNCTIONコマンドの詳細については、次の場所にあるPostgreSQLコアドキュメントを参照してください。

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

  • Estimatedrows フィールドを使用して、クエリプランナーが関数が返すと予想される行の推定数を示す正の数を指定します。これは、関数がセットを返すように宣言されている場合にのみ許可されます。デフォルトの想定は1000行です。

  • リーク防止? スイッチを動かして、関数に副作用があるかどうかを示します。デフォルトは いいえ です。このオプションはスーパーユーザーのみが設定できます。

  • サポート機能 フィールドを使用して、機能に使用するプランナーサポート機能を指定します。

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

ファンクションダイアログのパラメータータブ

[ パラメーター ]タブのフィールドを使用して、関数が呼び出されたときに適用される設定を指定します。 追加 アイコン(+)をクリックして、テーブルに 名前 / 値 フィールドを追加します。

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

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

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

ファンクションダイアログのセキュリティタブ

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

Privileges パネルを使用して、機能の使用権限をロールに割り当てます。

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

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

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

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

SecurityLabels パネルを使用して、ファンクションに適用されるセキュリティラベルを定義します。 追加 アイコン(+)をクリックして、各セキュリティラベルの選択を追加します。

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

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

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

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

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

例

以下は、 ファンクション ダイアログでの選択によって生成されるsqlコマンドの例です。

関数ダイアログのSQLタブ

この例では、 hire_salesmen という名前の plpgsql ファンクションの作成を示しています。このファンクションには3つの列(p_ename、p_sal、およびp_comm)があります。

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

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

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

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