Function Dialog¶
Function ダイアログを使用して、関数を定義します。関数を削除してから再作成した場合、新しい関数は古いものと同じエンティティではありません。古い関数を参照する既存のルール、ビュー、トリガーなどを削除する必要があります。
Function ダイアログは、次のダイアログタブを介して関数の開発を整理します: General 、 Definition 、 Code 、 Options 、 Parameters 、および Security 。 SQL タブには、ダイアログ選択によって生成されたSQLコードが表示されます。
[ General ]タブのフィールドを使用して、機能を識別します。
Name フィールドを使用して、関数の説明的な名前を追加します。名前は pgAdmin ツリーコントロールに表示されます。
所有者 の横にあるドロップダウンリストボックスを使用して、関数を所有するロールの名前を選択します。
Schema の横にあるドロップダウンリストボックスを使用して、関数が作成されるスキーマを選択します。
コメント フィールドに関数に関するメモを保存します。
[ 定義 ]タブをクリックして続行します。
[ Definition ]タブのフィールドを使用して、関数を定義します。
Returntype の横にあるドロップダウンリストボックスを使用して、関数によって返されるデータ型を選択します(ある場合)。
Language の横にあるドロップダウンリストボックスを使用して、実装言語を選択します。デフォルトは sql です。
Arguments のフィールドを使用して、引数を定義します。 Add アイコン(+)をクリックして、引数のパラメーターと値を設定します。
Datatype フィールドのドロップダウンリストボックスを使用して、データ型を選択します。
Mode フィールドのドロップダウンリストボックスを使用して、モードを選択します。入力パラメーターに IN を選択します。出力パラメーターに OUT を選択します。入力パラメーターと出力パラメーターの両方に INOUT を選択します。または、 VARIADIC を選択してVARIADICパラメーターを指定します。
ArgumentName フィールドに引数の名前を入力します。
DefaultValue フィールドで引数のデフォルト値を指定します。
Add アイコン(+)をクリックして、別の引数を定義します。引数を破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。
[ コード ]タブをクリックして続行します。
Code フィールドを使用して、関数が呼び出されたときに実行されるコードを記述します。
[ オプション ]タブをクリックして続行します。
Options タブのフィールドを使用して、関数のアクションを説明または変更します。
Volatility の横にあるドロップダウンリストボックスを使用して、次のいずれかを選択します。 VOLATILE はデフォルト値です。
VOLATILE は、1回のテーブルスキャン内でも関数値が変更される可能性があるため、最適化を行わないことを示します。
STABLE は、関数がデータベースを変更できないこと、および単一のテーブルスキャン内で、同じ引数値に対して一貫して同じ結果を返すことを示します。
IMMUTABLE は、関数がデータベースを変更できず、同じ引数値が指定された場合常に同じ結果を返すことを示します。
ReturnsaSet? スイッチを動かして、関数が複数の行を含むセットを返すかどうかを示します。デフォルトは いいえ です。
Strict? スイッチを移動して、引数のいずれかがNULLの場合は常に関数が常にNULLを返すかどうかを示します。 Yes の場合、NULL引数があると関数は実行されません。代わりに、NULLの結果が自動的に想定されます。デフォルトは いいえ です。
Securityofdefiner? スイッチを移動して、関数を作成したユーザーの権限で実行することを指定します。デフォルトは いいえ です。
Window? スイッチを動かして、関数がプレーン関数ではなくウィンドウ関数であることを示します。デフォルトは いいえ です。これは現在、Cで記述された関数でのみ役立ちます。既存の関数定義を置き換えるときに、WINDOW属性を変更することはできません。CREATEFUNCTIONコマンドの詳細については、次の場所にあるPostgreSQLコアドキュメントを参照してください。
Estimatedcost フィールドを使用して、関数の推定実行コストを表す正の数をcpu_operator_cost単位で指定します。関数がセットを返す場合、これは返される行ごとのコストです。
Estimatedrows フィールドを使用して、クエリプランナーが関数が返すと予想する行の推定数を示す正の数を指定します。これは、関数がセットを返すように宣言されている場合にのみ許可されます。デフォルトの想定は1000行です。
Leakproof? スイッチを動かして、関数に副作用があるかどうかを示します。デフォルトは いいえ です。このオプションは、スーパーユーザーのみが設定できます。
サポート関数 フィールドを使用して、関数に使用するプランナーサポート関数を指定します。
[ パラメーター ]タブをクリックして続行します。
パラメーター タブのフィールドを使用して、関数が呼び出されたときに適用される設定を指定します。 追加 アイコン(+)をクリックして、テーブルに 名前 / 値 フィールドを追加します。
パラメーター パネルの 名前 列のドロップダウンリストボックスを使用して、パラメーターを選択します。
Value フィールドを使用して、選択した変数に関連付けられる値を指定します。このフィールドは状況依存です。
[ セキュリティ ]タブをクリックして続行します。
[ セキュリティ ]タブを使用して、特権を割り当て、セキュリティラベルを定義します。
Privileges パネルを使用して、機能の使用権限をロールに割り当てます。
Grantee フィールドのドロップダウンリストボックスからロールの名前を選択します。
Privileges フィールド内をクリックします。1つ以上の権限の左側にあるチェックボックスをオンにして、選択した権限を指定されたユーザーに付与します。
特権を付与するためのデフォルトの付与者である現在のユーザーが、 Grantor フィールドに表示されます。
Add アイコン(+)をクリックして、追加の特権を割り当てます。特権を破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。
SecurityLabels パネルを使用して、関数に適用されるセキュリティラベルを定義します。 Add アイコン(+)をクリックして、各セキュリティラベルの選択を追加します。
Provider フィールドでセキュリティラベルプロバイダーを指定します。名前付きプロバイダーをロードし、提案されたラベル付け操作に同意する必要があります。
SecurityLabel フィールドにセキュリティラベルを指定します。特定のラベルの意味は、ラベルプロバイダーの裁量にあります。PostgreSQLは、ラベルプロバイダーがセキュリティラベルを解釈する必要があるかどうか、またはどのように解釈するかについて制限を設けていません。それらを格納するメカニズムを提供するだけです。
Add アイコン(+)をクリックして、追加のセキュリティラベルを割り当てます。セキュリティラベルを破棄するには、行の左側にあるゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。
SQL タブをクリックして続行します。
Function ダイアログに入力すると、SQLコマンドが生成されます(以下の例を参照)。レビューには SQL タブを使用します。再アクセスするかタブを切り替えて、SQLコマンドを変更します。
例¶
以下は、 Function ダイアログでの選択によって生成されるsqlコマンドの例です。
この例では、 hire_salesmen という名前の plpgsql ファンクションの作成を示しています。この関数には3つの列(p_ename、p_sal、およびp_comm)があります。
Info ボタン(i)をクリックして、オンラインヘルプにアクセスします。
Save ボタンをクリックして作業を保存します。
Close ボタンをクリックして、作業を保存せずに終了します。
Reset ボタンをクリックして、構成パラメーターを復元します。