CALL CLPPlus コマンド

CALL CLPPlus コマンドは、ストアード・プロシージャーを呼び出します。

呼び出し

CALL コマンドを使用して、配列パラメーターを指定したストアード・プロシージャーを呼び出すことができます。

許可

なし

必要な接続

なし

コマンド構文

構文図を読む構文図をスキップするCALLprocedure_name(,argument)
argument
構文図を読む構文図をスキップするparameter_value?ARRAY[,parameter_value]

コマンド・パラメーター

procedure_name
呼び出すプロシージャーを指定します。 同じ名前のストアード・プロシージャーが複数存在する場合、プロシージャー解決を使用して、呼び出される特定のプロシージャーが選択されます。 プロシージャー解決には、スキーマ、プロシージャー名、パラメーター数によってターゲット・プロシージャーを識別することが関係します。
parameter_value
引数値を指定します。テキスト値はすべて単一引用符で囲んでください。
?
OUT パラメーターのプレースホルダーを指定します。
ARRAY[ parameter_value1, parameter_value2, ... ]
配列パラメーター値を指定します。テキスト値はすべて単一引用符で囲んでください。

以下の例では、IN パラメーターと OUT パラメーターがある SUM ストアード・プロシージャーが作成されます。
CREATE PROCEDURE SUM
          (IN int1 integer, IN int2 integer, OUT int3 integer)
           BEGIN
            SET int3 = int1+int2;
           END;
           /
以下のように、CALL コマンドを使用して SUM ストアード・プロシージャーが呼び出されます。
call sum(5,10,?);
/
サンプルの CALL コマンドは、以下の出力を返します。
Value of output parameters
--------------------------------
INT3 = 15

Db250000I: The command completed successfully.
次の例では、names ユーザー・タイプと、配列パラメーターのある find_student ストアード・プロシージャーが作成されます。
CREATE TYPE names AS VARCHAR(20) ARRAY[50];

CREATE PROCEDURE find_student(IN students_in names,IN alphabet VARCHAR(1), OUT students_out names)
          BEGIN
            DECLARE i,j,max INTEGER;
        SET i = 1;
        SET j = 1;
        SET students_out = NULL;
        SET max = CARDINALITY(students_in);
        WHILE i <= max DO
        if substr(students_in[i], 1, 1) = alphabet THEN
            SET students_out[j] = students_in[i];
            SET j = j+1;
        END IF;
            SET i = i+1;
         END WHILE;
           END;
          /
find_student ストアード・プロシージャーが呼び出され、名前の頭文字が A の生徒のリストが検索されます。
CALL find_student(ARRAY['Alice','Bob','Derk','Peter','Alan','Clark'],'A',?);
/
サンプルの CALL コマンドは、以下の出力を返します。
Value of output parameters
--------------------------------
STUDENTS_OUT : ARRAY

 値
---------------
'Alice'
'Alan'

Db250000I: The command completed successfully.