Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к: Databricks SQL
Databricks Runtime 16.3 и более поздним версиям
Важный
Эта функция доступна в общедоступной предварительной версии.
Реализует блок скрипта SQL, который может содержать последовательность инструкций SQL, инструкций управления потоком, объявлений локальных переменных и обработчиков исключений.
Заметка
При вызове составной инструкции из записной книжки она должна быть единственной инструкцией в ячейке.
Синтаксис
[ label : ]
BEGIN
[ { declare_variable | declare_condition } ; [...] ]
[ declare_handler ; [...] ]
[ SQL_statement ; [...] ]
END [ label ]
declare_variable
DECLARE variable_name datatype [ DEFAULT default_expr ]
declare_condition
DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]
declare_handler
DECLARE handler_type HANDLER FOR condition_values handler_action
handler_type
EXIT
condition_values
{ { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
{ SQLEXCEPTION | NOT FOUND } [, ...] }
Параметры
-
Необязательный идентификатор используется для квалификации переменных, определенных в составном, и для выхода из него. Оба вхождения меток должны совпадать, а метка
END
может быть указана только в том случае, если указанlabel:
.Метка не должна быть указана для составной инструкции верхнего уровня.
NOT ATOMIC
Указывает, что, если инструкция SQL в составной части завершится ошибкой, предыдущие инструкции SQL не будут откатаны. Это единственное возможное поведение и оно является поведением по умолчанию.
declare_variable
Объявление локальной переменной для одной или нескольких переменных
-
Имя переменной. Имя не должно быть квалифицировано, а также должно быть уникальным в составной инструкции.
data_type
Любой поддерживаемый тип данных. Если data_type опущен, необходимо указать DEFAULT, а тип является производным от default_expression.
{ DEFAULT | = } default_expression
Определяет начальное значение переменной после объявления. default_expression должен быть преобразуемым к типу данных. Если значение по умолчанию не задано, переменная инициализирована с значением NULL.
-
Declare_condition
Объявление локального условия
-
Некавалифицированное имя условия распространяется на составную инструкцию.
sqlstate
STRING
литерал из 5 буквенно-цифровых символов (без учета регистра), состоящий из A-Z и 0-9. SQLSTATE не должен начинаться с "00", "01" или "XX". Все SQLSTATE, начиная с "02", также будут пойманы предопределенным исключением NOT FOUND. Если значение не указано, значение SQLSTATE равно 45000.
-
declare_handler
Объявление для обработчика ошибок.
handler_type
EXIT
Классифицирует обработчик для выхода из составной инструкции после обработки условия.
condition_values
** Указывает, на какие sqlstates или условия применяется обработчик. Значения условий должны быть уникальными во всех обработчиках в объединённом блоке. Определенные значения условий имеют приоритет над
SQLEXCEPTION
.sqlstate
STRING
литерал из 5 символов'A'-'Z'
и'0'-'9'
(без учета регистра).-
Условие, определенное в этом составном операторе, внешнем блоке операторов или системном классе ошибок.
SQLEXCEPTION
Применяется к любому условию ошибки, с которым сталкиваются пользователи.
NOT FOUND
Применяется к любому условию ошибки с классом SQLSTATE "02".
handler_action
Инструкция SQL для выполнения при возникновении любого из значений условия. Чтобы добавить несколько операторов, используйте вложенную составную инструкцию.
SQL_statement
Инструкция SQL, например DDL, DML, инструкция управления или составная инструкция. Любая инструкция
SELECT
илиVALUES
создает результирующий набор, который может использовать вызывающая сторона.
Примеры
-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
DECLARE a INT DEFAULT 1;
DECLARE b INT DEFAULT 5;
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
div0: BEGIN
VALUES (15);
END div0;
SET a = 10;
SET a = b / 0;
VALUES (a);
END;
15