Форматировщик PL/SQL
Форматируйте Oracle SQL и PL/SQL по правилам Oracle: альтернативное цитирование q'[...]', строки N'', идентификаторы в двойных кавычках, переменные :bind и косая черта, запускающая блок в SQL*Plus. CONNECT BY, START WITH, RETURNING и MINUS остаются отдельными предложениями, а блоки BEGIN и END с IF и LOOP получают отступы. Незакрытые строки и скобки отмечаются с указанием строки и столбца, что помогает разработчикам Oracle.
Часто задаваемые вопросы
Какой синтаксис Oracle распознается?
Распознаются строки в одинарных кавычках с удвоенными кавычками, альтернативное цитирование, например q'[it's]' или q'{...}', и национальные строки N''. Идентификаторы в двойных кавычках, имена с # и $, например emp#, переменные :bind и присваивания := сохраняются без изменений.
Можно ли форматировать блоки PL/SQL?
Да. Разделы BEGIN и END, конструкции IF THEN ELSE END IF, CASE и LOOP получают отступы, а каждый оператор размещается на отдельной строке. Объявления перед BEGIN остаются отдельными операторами.
Что происходит со строкой с косой чертой?
Строка, содержащая только /, которая запускает предыдущий блок в SQL*Plus и SQLcl, остается на отдельной строке. Она разделяет блоки до и после нее.
Какие предложения Oracle размещаются на отдельных строках?
В иерархических запросах CONNECT BY и START WITH остаются отдельными предложениями. RETURNING и оператор объединения множеств MINUS обрабатываются так же, как стандартные предложения SELECT, FROM, WHERE, GROUP BY и ORDER BY.
Поддерживается ли MERGE?
Да. Ветви WHEN MATCHED THEN и WHEN NOT MATCHED THEN начинаются с новых строк, поэтому операторы Oracle MERGE остаются понятными.
Сохраняются ли комментарии?
Да. Комментарии строк -- и блочные комментарии /* block comments */ остаются на месте. Подсказки оптимизатору, например /*+ INDEX(e) */, сохраняются в точности как написаны.
Меняется ли регистр ключевых слов?
Нет. Регистр ключевых слов и идентификаторов сохраняется. Имена Oracle без кавычек нечувствительны к регистру, а имена в кавычках — чувствительны; и те и другие остаются без изменений.
Какие ошибки обнаруживаются?
Незакрытые строки, альтернативные кавычки, идентификаторы в кавычках и блочные комментарии, а также несбалансированные круглые скобки — для каждого указываются строка и столбец. Пакеты и грамматика не компилируются.
Каков максимальный размер входных данных?
До 1 MB на запрос и 128 KB на оператор или блок. Большие пакеты можно форматировать частями.
Можно ли выбрать отступы и сохраняется ли мой код?
Используйте 2 или 4 пробела либо табуляцию. Код форматируется только в памяти и никогда не сохраняется.