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に準拠しています。
ユーザは出力パラメータの値を受け取る変数を書くべきだと標準は述べています。