Von Bedeutung
この機能は パブリック プレビュー段階です。
適用対象: Databricks Runtime 17.0 以上
ストアド プロシージャを名前で呼び出し、プロシージャとの間で引数を渡します。
プロシージャ呼び出しは、最大 64 レベルまで入れ子にすることができます。
構文
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
パラメーター
-
呼び出すプロシージャの名前。 プロシージャ名は、必要に応じてスキーマ名で修飾できます。 名前が修飾されていない場合、プロシージャは現在のスキーマで解決されます。 プロシージャが存在しない場合は、
ROUTINE_NOT_FOUND
エラーが発生します。 -
IN
パラメーターに割り当てられた引数については、パラメーターにキャストできる型の任意の式か、DEFAULT
キーワードを指定します。OUT
パラメーターとINOUT
パラメーターの場合、引数はセッション変数またはローカル変数である必要があります。プロシージャが失敗した場合、
OUT
の引数値とINOUT
パラメーターは変更されません。 -
argExpr
を割り当てるパラメーターの非修飾名。
引数の数は、プロシージャに指定されたパラメーターの数を超えてはなりません。
パラメーターよりも少ない数の引数を指定する場合は、パラメーターを DEFAULT
値で定義する必要があります。
例示
> CREATE OR REPLACE PROCEDURE area_of_rectangle
(IN x INT, IN y INT, OUT area INT, INOUT acc INT)
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SET area = x * y;
SET acc = acc + area;
SELECT 'Area of rectangle is: ' || area;
END;
-- Session varables to handle OUT and INOUT parameters
> DECLARE area INT;
> DECLARE acc INT DEFAULT 10;
-- Invocation by position
> CALL area_of_rectangle(5, 10, area, acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 60
-- Invocation by name
> CALL area_of_rectangle(y => 10, x => 5, area => area, acc => acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 120