Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Эта функция доступна в общедоступной предварительной версии.
Область применения: 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