Поделиться через


ЗВАТЬ

Это важно

Эта функция доступна в общедоступной предварительной версии.

Область применения:check помечена да 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