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