次の方法で共有


呼び出し

Von Bedeutung

この機能は パブリック プレビュー段階です

適用対象:はいとチェックが付いている Databricks Runtime 17.0 以上

ストアド プロシージャを名前で呼び出し、プロシージャとの間で引数を渡します。

プロシージャ呼び出しは、最大 64 レベルまで入れ子にすることができます。

構文

CALL procedure_name( [ argument [, …] ]
                     [ namedParameter => argument ] [, ...] )

パラメーター

  • procedure_name

    呼び出すプロシージャの名前。 プロシージャ名は、必要に応じてスキーマ名で修飾できます。 名前が修飾されていない場合、プロシージャは現在のスキーマで解決されます。 プロシージャが存在しない場合は、 ROUTINE_NOT_FOUND エラーが発生します。

  • 引数

    INパラメーターに割り当てられた引数については、パラメーターにキャストできる型の任意の式か、DEFAULTキーワードを指定します。 OUTパラメーターとINOUTパラメーターの場合、引数はセッション変数またはローカル変数である必要があります。

    プロシージャが失敗した場合、 OUT の引数値と INOUT パラメーターは変更されません。

  • namedParameter

    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