Формат Transact-SQL в расширении MSSQL для Visual Studio Code

Согласованное форматирование упрощает Transact-SQL (T-SQL) для чтения, проверки и обслуживания, особенно если несколько пользователей участвуют в одной базе кода. Расширение MSSQL для Visual Studio Code включает встроенный форматировщик SQL, который можно запускать по запросу, настраивать автоматическое форматирование при сохранении и настраивать через настройки Visual Studio Code.

Функциональность форматирования T-SQL в расширении MSSQL основана на ScriptDOM — открытой .NET-библиотеке, которая анализирует T-SQL и генерирует скрипты на основе абстрактных синтаксических деревьев.

Формат по запросу

Вы можете отформатировать T-SQL в любом окне редактора. Форматировщик работает со всем документом или только с выбранным текстом.

Для форматирования T-SQL по требованию используйте один из следующих методов:

  • Контекстное меню: Кликните правой кнопкой мыши в окне редактора T-SQL и выберите Формат документа или Выбор формата.

  • Палитра команд: запустить формат документа или выбор формата.

  • Клавиша клавиатуры: для форматирования документа нажмите Shift+Alt+F на Windows и Linux или Shift+Option+F на macOS. Для выбора формата нажмите Ctrl+K, Ctrl+F на Windows и Linux или Cmd+K, Cmd+F на macOS.

Форматирование при сохранении

В Visual Studio Code стандартная настройка редактора управляет форматом при сохранении, а не отдельная настройка форматировщика MSSQL.

Используйте следующие настройки в файле settings.json Visual Studio Code, чтобы автоматически форматировать код T-SQL при каждом сохранении файла:

{
  "[sql]": {
    "editor.formatOnSave": true
  }
}

Настройка параметров форматирования

Настройте форматирование в интерфейсе Visual Studio Code Settings или в пользовательском или рабочем пространствеsettings.json.

В редакторе настроек выполните поиск Mssql>Format , чтобы увидеть доступные варианты. В settings.json используйте соответствующие настройки mssql.format.*.

Поддерживаемые параметры

Следующие настройки задают параметры форматирования SQL.

General

Setting Тип По умолчанию Description
mssql.format.showParseErrorNotification bool true Показывайте уведомление, когда форматор не может полностью разобрать T-SQL.
mssql.format.options.sqlVersion enum sql170 Версия T-SQL использовалась для разбора и генерации отформатированных скриптов.
mssql.format.options.sqlEngineType enum all Тип ядра базы данных, используемый для разбора и генерации форматированных скриптов. Допустимые значения: all, standalone и sqlAzure.

Выравнивание

Setting Тип По умолчанию Description
mssql.format.options.alignClauseBodies bool true Выровняйте тела FROM, WHERE, GROUP BY и аналогичных конструкций.
mssql.format.options.alignColumnDefinitionFields bool true Выровняйте поля определения столбцов, такие как имена, типы данных и ограничения.
mssql.format.options.alignSetClauseItem bool true Выравнивание SET элементов предложения в UPDATE инструкциях.
mssql.format.options.clauseBodyAlignment enum aligned Оставьте тела условий aligned вместе с соответствующими ключевыми словами или разместите их на следующей строке в виде indented.

Корпус и идентификаторы

Setting Тип По умолчанию Description
mssql.format.options.builtInFunctionCasing enum preserve Стиль написания поддерживаемых имён встроенных функций, таких как GETDATE и COALESCE. Допустимые значения — preserve, uppercase, lowercase и pascalCase.
mssql.format.options.identifierBracketing enum preserve Сохраняйте, добавляйте или убирайте дополнительные квадратные скобки вокруг идентификаторов. Допустимые значения: preserve, includeBrackets и excludeBrackets. Обязательные скобки сохраняются.
mssql.format.options.identifierCasing enum preserve Стиль корпуса для идентификаторов объектов. Допустимые значения — preserve, uppercase, lowercase и pascalCase.
mssql.format.options.keywordCasing enum uppercase Стиль регистра ключевых слов. Допустимые значения: uppercase, lowercase и pascalCase.

Paths

Setting Тип По умолчанию Description
mssql.format.options.allowExternalLanguagePaths bool true Разрешить внешнему языковому контенту использовать пути к файлам.
mssql.format.options.allowExternalLibraryPaths bool true Разрешить внешнему контенту библиотеки использовать пути к файлам.

Formatting

Setting Тип По умолчанию Description
mssql.format.options.asKeywordOnOwnLine bool true Поместите AS на отдельной строке.
mssql.format.options.columnAliasStyle enum asKeyword Форматировать псевдонимы столбцов с использованием AS, знака равенства или их исходного синтаксиса. Допустимые значения: asKeyword, equalsSign и preserve.
mssql.format.options.commaPlacement enum trailing Поставьте запятые в конце пунктов списка (trailing) или в начале следующего пункта (leading).
mssql.format.options.leadingCommaSpaceCount integer 1 Количество пробелов после ведущей запятой. Допустимые значения — 0 и 1.
mssql.format.options.persistTrailingGo bool false Сохраните концевые разделители пакетов GO из исходного скрипта.
mssql.format.options.preserveComments bool true Сохранение комментариев во время форматирования.
mssql.format.options.terminateBlockStatements bool false Добавьте точки с запятой после блоков BEGIN...END и TRY...CATCH.

Отступы

Setting Тип По умолчанию Description
mssql.format.options.indentSetClause bool false Делайте отступ для предложений SET в инструкциях UPDATE.
mssql.format.options.indentViewBody bool false Вмятиные VIEW тела.

Многострочный

Setting Тип По умолчанию Description
mssql.format.options.multilineGroupByElementsList bool false Форматируйте GROUP BY элементы в многострочный список.
mssql.format.options.multilineHavingPredicatesList bool true Форматируйте HAVING предикаты, разделённые AND или OR, в несколько строк.
mssql.format.options.multilineInsertSourcesList bool true Форматируйте INSERT источники в виде многостроковых списков.
mssql.format.options.multilineInsertTargetsList bool true Форматируйте INSERT столбцы в виде многостроковых списков.
mssql.format.options.multilineInValuesList bool false Форматируйте значения в IN предикате как многострочный список.
mssql.format.options.multilineNestedFunctionCalls bool false Форматировать вложенные вызовы функций на отдельных отступных строках, сохраняя изолированные вызовы функций на одной строке.
mssql.format.options.multilineOrderByElementsList bool false Форматируйте ORDER BY элементы в многострочный список.
mssql.format.options.multilinePartitionByElementsList bool false Форматируйте PARTITION BY элементы в спецификациях окна как многострочный список.
mssql.format.options.multilineProcedureParametersList bool false Форматируйте параметры процедуры и функции на отдельных строках.
mssql.format.options.multilineSelectElementsList bool true Форматируйте SELECT столбцы в виде многостроковых списков.
mssql.format.options.multilineSetClauseItems bool true Форматируйте SET элементы клаузы как многострочные списки.
mssql.format.options.multilineViewColumnsList bool true Форматируйте VIEW столбцы в виде многостроковых списков.
mssql.format.options.multilineWherePredicatesList bool true Форматируйте WHERE предикаты как многострочные списки.
mssql.format.options.multilineWithOptionsList bool false Форматируйте поддерживаемые значения WITH и OPTION условий на отдельных строках.

Новая строка

Setting Тип По умолчанию Description
mssql.format.options.newLineAfterJoinKeyword bool true Поместите исходник из объединённой таблицы на новую строку после JOIN ключевого слова.
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true Поставьте новую строку перед закрывающей скобкой многострочного списка.
mssql.format.options.newLineBeforeFromClause bool true Поставьте новую строку перед этим FROM пунктом.
mssql.format.options.newLineBeforeGroupByClause bool true Поставьте новую строку перед этим GROUP BY пунктом.
mssql.format.options.newLineBeforeHavingClause bool true Поставьте новую строку перед этим HAVING пунктом.
mssql.format.options.newLineBeforeJoinClause bool true Поставьте новую строку перед JOIN пунктами.
mssql.format.options.newLineBeforeOffsetClause bool true Поставьте новую строку перед этим OFFSET пунктом.
mssql.format.options.newLineBeforeOnClause bool true Разместите ON пункт соединения на новой линии.
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false Поставьте новую строку перед начальной скобкой многострочного списка.
mssql.format.options.newLineBeforeOrderByClause bool true Поставьте новую строку перед этим ORDER BY пунктом.
mssql.format.options.newLineBeforeOutputClause bool true Поставьте новую строку перед этим OUTPUT пунктом.
mssql.format.options.newLineBeforeWhereClause bool true Поставьте новую строку перед этим WHERE пунктом.
mssql.format.options.newLineBeforeWindowClause bool true Поставьте новую строку перед этим WINDOW пунктом.
mssql.format.options.newlineFormattedCheckConstraint bool false Поместить CHECK клаузу ограничения на отдельную строку.
mssql.format.options.newLineFormattedIndexDefinition bool false Разместите части UNIQUE, INCLUDE и WHERE встроенных определений индексов на отдельных строках.

Интервалы между инструкциями и пакетами

Setting Тип По умолчанию Description
mssql.format.options.numNewlinesAfterBatches integer 1 Количество разрывов строк после каждого разделителя пакетов GO, от 0 до 5.
mssql.format.options.numNewlinesAfterBatchStatement integer 2 Количество разрывов строк после каждой инструкции верхнего уровня в пакете, от 0 до 5.
mssql.format.options.numNewlinesAfterStatement integer 1 Количество разрывов строк после каждого утверждения, от 0 до 5.

Spacing

Setting Тип По умолчанию Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true Вставьте пробел между типом данных и его стобинками, например VARCHAR (255).
mssql.format.options.spaceBetweenParametersInDataType bool true Вставьте пробелы между параметрами в типе данных, например DECIMAL (10, 2).

Пример файлов настроек

{
  "mssql.format.options.keywordCasing": "lowercase",
  "mssql.format.options.alignClauseBodies": false,
  "mssql.format.options.numNewlinesAfterStatement": 2,
  "[sql]": {
    "editor.formatOnSave": true
  }
}

Установите средство форматирования по умолчанию

Чтобы установить расширение MSSQL по умолчанию, выберите Configure Default Formatter...>SQL Server (mssql) или добавить следующую конфигурацию вsettings.json:

{
  "[sql]": {
    "editor.defaultFormatter": "ms-mssql.mssql"
  }
}