Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к:
Databricks SQL
Databricks Runtime 17.0 и выше
Вызывает хранимую процедуру по имени и передает аргументы в и из процедуры.
Вызовы процедур могут быть вложены до 64 уровней.
Синтаксис
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
Параметры
-
Название процедуры, которую следует вызвать. Имя процедуры может быть, при необходимости, уточнено с помощью имени схемы. Если имя не задано, процедура разрешается в текущей схеме. Если процедура не существует, будет вызвана ошибка
ROUTINE_NOT_FOUND. -
Для аргументов, назначаемых параметрам
IN, можно использовать любое выражение такого типа, которое можно привести к типу параметра, или ключевое словоDEFAULT. ДляOUTиINOUTпараметров аргумент должен быть переменной сеанса или локальной переменной.Если процедура завершается сбоем значений аргументов
OUTиINOUTпараметров остаются неизменными.Замечание
Аргумент должен соответствовать типу данных параметра. Это включает указание, например,
DATE'2015-01-01', вместо'2015-01-01'для параметраDATE. -
Имя параметра без квалификации, которому назначается
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