リファレンスガイド> TDV SQLスクリプト> SQLスクリプトステートメントリファレンス> CALL
 
CALL
CALLステートメントは、SQLスクリプトでプロシージャを呼び出すために使用されます。
構文
CALL <procedureName> ( [<valueExpression>[,…]] )]
 
<procedureName>は、プロシージャ宣言の構文を使用して宣言されたプロシージャの名前を参照します。プロシージャの宣言については、SQLスクリプトプロシージャヘッダーを参照してください。
パラメーターがない場合、CALL構文の括弧は必要ありません。
備考
INパラメータには、任意の値式を渡すことができます。詳細については、値式を参照してください。式は、必要に応じて、INパラメーターのタイプと一致するように暗黙的にキャストされます。 INパラメータは、リテラル、式、または変数にすることができます。 INパラメーターが変数の場合、値は変更されません。 PIPE修飾子(PIPE修飾子)を使用したINパラメーターは、PIPE変数でもある変数のみを渡すことができます。これは、PIPE修飾子を持つ現在のプロシージャのINまたはOUTパラメータのみを渡すことができることを意味します。
INパラメータに渡される式は、左から右に評価されます。
INOUTおよびOUTパラメータには、適切なタイプの変数を渡す必要があります。暗黙的な型変換はサポートされていません。 INOUTパラメーターの場合、プロシージャーで値が変更されていなければ、値は変更されません。 OUTパラメータの場合、プロシージャで変更されていない場合、値はNULLに設定されます。 PIPE修飾子を持つOUTパラメータには、PIPEと同じカーソルタイプのカーソル変数のみを渡すことができます。
PROCEDURE square (IN x INTEGER, OUT result INTEGER)
BEGIN
  SET result = x * x;
END
 
PROCEDURE p( )
BEGIN
  DECLARE y INTEGER;
CALL square(2, y);
-- y is 4
CALL sqaure(y, y);
-- y is 16
END
 
 
PROCEDURE factorial (IN x INTEGER, OUT result INTEGER)
BEGIN
  IF x = 1 THEN
    SET result = 1;
  ELSE
    CALL /shared/factorial(x-1; result);
    SET result = x * result;
END