Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к:
Databricks SQL
Databricks Runtime 16.3 и более поздних версий
Вы можете использовать мощную процедурную логику с помощью стандартного синтаксиса сценариев на основе SQL/PSM.
Любой скрипт SQL состоит из и начинается с составного блока инструкций (BEGIN ... END).
Составная инструкция начинается с раздела для объявления локальных переменных, курсоров, определяемых пользователем условий и обработчиков условий, которые используются для перехвата исключений.
За этим следует составной текст инструкции, состоящий из следующих элементов:
- Инструкции управления потоком включают циклы по выражениям предиката, циклы FOR по результатам запроса, условная логика, например IF и CASE, а также средства для прерывания циклов, таких как LEAVE и ITERATE.
- Обработка курсоров с помощью инструкций OPEN, FETCH и CLOSE (Databricks Runtime 18.1 и более поздних версий).
- Инструкции DDL, такие как
ALTER,CREATE,DROP. - Операторы DCL (Data Control), например, GRANT и REVOKE.
- Инструкции INSERTDML, UPDATEDELETE и MERGE.
- Запросы , возвращающие результирующие наборы вызывающей части скрипта.
- SET инструкции для задания локальных переменных, а также переменных сеанса.
- Оператор EXECUTE IMMEDIATE.
- Вложенные составные инструкции, предоставляющие вложенные области для переменных, курсоров, условий и обработчиков условий.
Передача данных между вызывающей стороной и составным выражением
Существует два способа передачи данных в скрипт SQL и из нее.
- Используйте переменные сеанса для передачи скалярных значений или небольших наборов массивов или сопоставлений из одного скрипта SQL в другой.
- Используйте маркеры параметров для передачи скалярных значений или небольших наборов массивов или сопоставления данных из мини-приложения записной книжки, Python или другого языка в скрипт SQL.
Область переменных и курсоров
Переменные, объявленные в составной инструкции, можно ссылаться в любом выражении в составной инструкции. Databricks разрешает идентификаторы из самой внутренней области, следуя правилам, описанным в разделе «Разрешение имён». Для разрешения неоднозначностей с повторяющимися именами переменных можно использовать необязательные составные инструкции метки.
Курсоры, объявленные в составной инструкции, можно ссылаться на OPENFETCHCLOSE и инструкции внутри этой составной инструкции. Как и переменные, можно использовать необязательные метки составных инструкций для диамбигуации повторяющихся имен курсоров в вложенных областях.
Обработка условий
Скрипты SQL поддерживают обработчики условий, которые используются для перехвата и обработки исключений из EXIT составной инструкции или CONTINUE выполнения (Databricks Runtime 18.1 и более поздних версий).
В обработчике условий можно ПЕРЕСИГНАЛИЗИРОВАТЬ исходное исключение, СИГНАЛИЗИРОВАТЬ новое исключение или выйти из составной инструкции без выброса исключения.
Обработчики условий можно определить для обработки трех отдельных классов условий:
Одно или несколько именованных условий, которые могут быть определенным классом ошибок Databricks, например
DIVIDE_BY_ZEROили объявленным пользователем условием. Эти обработчики обрабатывают эти конкретные условия.Один или несколько
SQLSTATE, которые могут быть вызваны Databricks или инструкциейSIGNALпользователя. Эти обработчики могут обрабатывать любое условие, связанное с этимSQLSTATE.Универсальный обработчик
SQLEXCEPTIONможет перехватывать все условия, относящиеся кSQLEXCEPTION(любыеSQLSTATE, которые не являютсяXX***и не02***).Обработчик
NOT FOUNDперехватывает все условия с классом'02xxx'SQLSTATE, который включает условие CURSOR_NO_MORE_ROWS , возникающее при получении за пределами результирующих наборов курсоров (Databricks Runtime 18.1 и более поздних версий).
Ниже описано, как решить, какой обработчик условий применяется к исключению. Этот обработчик условий называется наиболее подходящим обработчиком:
Обработчик условий не может применяться к любой инструкции, определенной в собственном тексте или тексте любого обработчика условий, объявленного в той же составной инструкции.
Применимые обработчики условий, определенные внутри самой внутренней составной инструкции, где возникло исключение, являются соответствующими.
Если доступно несколько соответствующих обработчиков, наиболее подходящий обработчик является наиболее подходящим. Например, обработчик именованного условия более конкретен, чем обработчик на именованном
SQLSTATE. Универсальный обработчикEXCEPTIONявляется наименее конкретным.
Результат обработчика условия выглядит следующим образом:
- Обработчик выполняет инструкцию, а затем завершает составную
EXITинструкцию, объявленную обработчиком. Все курсоры, открытые в этой составной инструкции и вложенные составные инструкции, неявно закрыты. - Обработчик
CONTINUEвыполняет инструкцию, а затем продолжает выполнение с помощью инструкции, следующей за той, которая вызвала условие. - Если обработчик
SIGNALилиRESIGNALне является условием собственного, результат обработчика условий заключается в выполнении инструкции после составной инструкции, объявленной обработчиком для выполнения следующего.
Хранимые процедуры SQL
Область применения:
Databricks SQL
Databricks Runtime версии 17.0 и выше
С помощью инструкции CREATE PROCEDURE можно сохранить скрипт SQL в каталоге Unity. Затем GRANT вы можете предоставить доступ к процедуре другим пользователям. Затем эти субъекты могут использовать инструкцию CALL для вызова процедуры.
Список инструкций потока управления
Ниже приведен список поддерживаемых инструкций потока управления:
- Инструкция CASE
- Оператор CLOSE
- Составная инструкция BEGIN END
- Оператор FETCH
- Инструкция FOR
- GET Инструкция по диагностике
- Оператор IF THEN ELSE
- Оператор ITERATE
- Оператор LEAVE
- Оператор LOOP
- Инструкция OPEN
- Оператор REPEAT
- Инструкция RESIGNAL
- Оператор SIGNAL
- Цикл WHILE
Список операторов курсора
Следующие инструкции курсора поддерживаются в Databricks Runtime 18.1 и более поздних версиях. Курсоры объявляются в составной инструкции.