CALL CLPPlus コマンド
CALL CLPPlus コマンドは、ストアード・プロシージャーを呼び出します。
呼び出し
CALL コマンドを使用して、配列パラメーターを指定したストアード・プロシージャーを呼び出すことができます。
許可
なし
必要な接続
なし
コマンド構文
コマンド・パラメーター
- 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.