Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо: Databricks Runtime 16.3 и более поздних версий
Важный
Эта функция доступна в общедоступной предварительной версии.
Вы можете использовать мощную процедурную логику с помощью стандартного синтаксиса сценариев на основе SQL/PSM.
Любой скрипт SQL начинается с и состоит из блока составного выражения (BEGIN ... END
).
Составная инструкция начинается с раздела для объявления локальных переменных, определяемых пользователем условий и обработчиков условий, которые используются для обработки исключений.
За этим следует составной текст инструкции, состоящий из следующих элементов:
- Инструкции управления потоком включают циклы по выражениям предиката, циклы FOR по результатам запроса, условную логику, например IF и CASE, и средства выхода из циклов, таких как ОСТАВИТЬ и ИТЕРИРОВАТЬ.
- Инструкции DDL, такие как
ALTER
,CREATE
,DROP
. - Операторы DCL (Data Control), например, GRANT и REVOKE.
- Инструкции DML INSERT, UPDATE, DELETEи MERGE.
- Запросы, которые возвращают результативные наборы вызывающему скрипта.
- SET инструкции для задания локальных переменных, а также переменных сеанса.
- Оператор EXECUTE IMMEDIATE.
- Вложенные составные операции, предоставляющие вложенные области для переменных, условий и обработчиков условий.
Передача данных между вызывающей стороной и составным выражением
Существует два способа передачи данных в скрипт SQL и из нее.
- Используйте переменные сеанса для передачи скалярных значений или небольших наборов массивов или сопоставлений из одного скрипта SQL в другой.
- Используйте маркеры параметров для передачи скалярных значений или небольших наборов массивов или сопоставления данных из мини-приложения записной книжки, Python или другого языка в скрипт SQL.
Область переменных
Переменные, объявленные в составной инструкции, можно ссылаться в любом выражении в составной инструкции. Databricks разрешает идентификаторы, начиная с самой внутренней области, в соответствии с правилами, описанными в разрешении имен. Вы можете использовать необязательное составное выражение меток для разрешения неоднозначностей повторяющихся имен переменных .
Обработка условий
Скрипты SQL поддерживают обработчики исключений, которые используются для перехвата и обработки ошибок в процессе EXIT
выполнения скрипта SQL.
В обработчике условий можно DELETEAL исходное исключение, SIGNAL новое исключение или выйти из составной инструкции без исключения.
Обработчики условий можно определить для обработки трех отдельных классов условий:
Одно или несколько именованных условий, которые могут быть определенным классом ошибок Databricks, например
DIVIDE_BY_ZERO
или объявленным пользователем условием. Эти обработчики обрабатывают эти конкретные условия.Один или несколько
SQLSTATE
, которые могут быть вызваны Databricks или инструкциейSIGNAL
пользователя. Эти обработчики могут обрабатывать любое условие, связанное с этимSQLSTATE
.Универсальный обработчик
SQLEXCEPTION
может перехватывать все условия, относящиеся кSQLEXCEPTION
(любыеSQLSTATE
, которые не являютсяXX***
и не02***
).
Ниже описано, как решить, какой обработчик условий применяется к исключению. Этот обработчик условий называется наиболее подходящим обработчиком:
Обработчик условий не может применяться к любой инструкции, определенной в собственном тексте или тексте любого обработчика условий, объявленного в той же составной инструкции.
Применимые обработчики условий, определенные внутри самой внутренней составной инструкции, где возникло исключение, являются соответствующими.
Если доступно несколько соответствующих обработчиков, наиболее подходящий обработчик является наиболее подходящим. Например, обработчик именованного условия более конкретен, чем обработчик на именованном
SQLSTATE
. Универсальный обработчикEXCEPTION
является наименее конкретным.
Если обработчик SIGNAL
или RESIGNAL
не является условием собственного, результат обработчика условий заключается в выполнении инструкции после составной инструкции, объявленной обработчиком для выполнения следующего.
Ниже приведен список поддерживаемых инструкций потока управления: