CALL — プロシージャを呼び出す
CALLname( [argument] [, ...] )
CALLは、プロシージャを実行します。
プロシージャがいくつかの出力パラメータを持っている場合、それらの出力パラメータの値を含んだ結果の行を返します。
nameプロシージャの名前です(スキーマ修飾名も可)。
argumentプロシージャの呼び出しに対する引数式です。
引数は、という構文を使ってパラメータ名を含むことができます。
これは通常の関数呼び出しと同様に動作します。詳細は4.3を参照してください。
name => value
引数は、OUTパラメータを含む、デフォルトのないプロシージャパラメータすべてに対して与えなければなりません。
しかしながら、OUTパラメータに一致する引数は評価されませんので、それらに対してはNULLとだけ書くのが慣例です。
(OUTパラメータに対して何か他のものを書くと、PostgreSQLの将来のバージョンで互換性の問題が起きるかもしれません。)
プロシージャの呼び出しを許可されるためには、ユーザがプロシージャに対するEXECUTE権限を持つ必要があります。
関数(プロシージャではなく)の呼び出しには、代わりにSELECTを使用します。
トランザクションブロック内でCALLが実行される場合、呼び出されたプロシージャはトランザクション制御文を実行できません。
トランザクション制御文は、CALLが自身のトランザクション内で実行された場合のみ許可されます。
PL/pgSQLではCALLコマンド内の出力パラメータの扱いが異なります。
43.6.3を参照してください。
CALL do_db_maintenance();
CALLは、出力パラメータの扱いを除いて標準SQLに準拠しています。
ユーザは出力パラメータの値を受け取る変数を書くべきだと標準は述べています。