Udostępnij przez


NAZWAĆ

Ważne

Ta funkcja jest dostępna w publicznej wersji testowej.

Dotyczy:oznaczone jako tak Databricks SQL oznaczone jako tak Databricks Runtime 17.0 lub nowsze

Wywołuje procedurę składowaną według nazwy i przekazuje argumenty do i z procedury.

Wywołania procedur mogą być zagnieżdżone do 64 poziomów.

Uwaga / Notatka

Instrukcja CALL nie jest obsługiwana w ODBC.

Składnia

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

Parametry

  • procedure_name

    Nazwa procedury, którą należy wywołać. Nazwa procedury może być opcjonalnie kwalifikowana przy użyciu nazwy schematu. Jeśli nazwa nie jest kwalifikowana, procedura jest rozstrzygana w bieżącym schemacie. Jeśli procedura nie istnieje, zgłoszony zostanie błąd ROUTINE_NOT_FOUND.

  • argument

    W przypadku argumentów przypisanych do IN parametrów, może to być dowolne wyrażenie typu rzutowalnego na parametr lub słowo kluczowe DEFAULT. W przypadku OUT parametrów i INOUT argument musi być zmienną sesji lub zmienną lokalną.

    Jeśli procedura nie powiedzie się, wartości argumentów parametrów OUT i INOUT pozostaną niezmienione.

    Uwaga / Notatka

    Argument musi być zgodny z typem danych parametru. Obejmuje to określenie na przykład: DATE'2015-01-01', zamiast '2015-01-01' dla parametru DATE.

  • namedParameter

    Niekwalifikowana nazwa parametru, do którego przypisano argExpr.

Liczba argumentów nie może być większa niż liczba parametrów określonych dla procedury. Jeśli określisz mniej argumentów niż istnieją parametry, parametry muszą być zdefiniowane z wartościami DEFAULT .

Przykłady

> 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