Formate Transact-SQL na extensão MSSQL para Visual Studio Code

A formatação consistente torna Transact-SQL (T-SQL) mais fácil de ler, revisar e manter, especialmente quando várias pessoas contribuem para a mesma base de código. A extensão MSSQL para Visual Studio Code inclui um formador SQL embutido que você pode rodar sob demanda, configurar para formatação automática no save e personalizar pelas configurações do Visual Studio Code.

A funcionalidade de formatação do T-SQL na extensão MSSQL é construída sobre o ScriptDOM, uma biblioteca .NET de código aberto que analisa o T-SQL e gera scripts baseados em árvores de sintaxe abstratas.

Formatação sob demanda

Você pode formatar T-SQL em qualquer janela do editor. O formatador funciona no documento inteiro ou apenas no texto que você selecionar.

Para formatar T-SQL sob demanda, use um dos seguintes métodos:

  • Menu de contexto: Clique com o botão direito em uma janela do editor T-SQL e selecione Formatar Documento ou Seleção de Formato.

  • Paleta de Comandos: Executar Documento de Formato ou Seleção de Formato.

  • Atalho de teclado: Para Formatar Documento, pressione Shift+Alt+F no Windows e Linux, ou Shift+Option+F no macOS. Para Seleção de Formato, pressione Ctrl+K, Ctrl+F no Windows e Linux, ou Cmd+K, Cmd+F no macOS.

Formatar ao salvar

No Visual Studio Code, a configuração padrão do editor controla a formatação ao salvar, em vez de uma configuração dedicada do formatador do MSSQL.

Use as seguintes configurações no seu arquivo Visual Studio Code settings.json para formatar T-SQL automaticamente sempre que salvar um arquivo:

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

Configurar opções de formatação

Configure a formatação na interface de configurações do Visual Studio Code ou no workspace do usuário settings.json.

No editor de Configurações, procure porFormatoMssql> para visualizar as opções disponíveis. Em settings.json, use as configurações correspondentes de mssql.format.*.

Definições suportadas

As configurações a seguir configuram o formatador SQL.

General

Setting Tipo Default Description
mssql.format.showParseErrorNotification bool true Mostre uma notificação quando o formatador não consegue analisar totalmente o T-SQL.
mssql.format.options.sqlVersion enumeração sql170 Versão T-SQL usada para analisar e gerar scripts formatados.
mssql.format.options.sqlEngineType enumeração all Tipo Mecanismo de Banco de Dados usado para analisar e gerar scripts formatados. Os valores válidos são all, standalonee sqlAzure.

Alinhamento

Setting Tipo Default Description
mssql.format.options.alignClauseBodies bool true Alinhe os corpos das cláusulas FROM, WHERE, GROUP BY e similares.
mssql.format.options.alignColumnDefinitionFields bool true Alinhe campos de definição de colunas, como nomes, tipos de dados e restrições.
mssql.format.options.alignSetClauseItem bool true Alinhe os itens da cláusula SET nas instruções UPDATE.
mssql.format.options.clauseBodyAlignment enumeração aligned Mantenha os corpos aligned das cláusulas com suas palavras-chave ou coloque-as na próxima linha como indented.

Revestimento e identificadores

Setting Tipo Default Description
mssql.format.options.builtInFunctionCasing enumeração preserve Estilo de carcaça para nomes de funções embutidas suportados, como GETDATE e COALESCE. Os valores válidos são preserve, uppercase, lowercase e pascalCase.
mssql.format.options.identifierBracketing enumeração preserve Preserve, adicione ou remova colchetes quadrados opcionais ao redor dos identificadores. Os valores válidos são preserve, includeBracketse excludeBrackets. Os colchetes obrigatórios são mantidos.
mssql.format.options.identifierCasing enumeração preserve Estilo de carcaça para identificadores de objetos. Os valores válidos são preserve, uppercase, lowercase e pascalCase.
mssql.format.options.keywordCasing enumeração uppercase Estilo de maiúsculas e minúsculas para palavras-chave. Os valores válidos são uppercase, lowercasee pascalCase.

Paths

Setting Tipo Default Description
mssql.format.options.allowExternalLanguagePaths bool true Permita que conteúdos de linguagem externa usem caminhos de arquivo.
mssql.format.options.allowExternalLibraryPaths bool true Permita que o conteúdo externo da biblioteca use caminhos de arquivo.

Formatting

Setting Tipo Default Description
mssql.format.options.asKeywordOnOwnLine bool true Coloque AS em uma linha própria.
mssql.format.options.columnAliasStyle enumeração asKeyword Formate os aliases das colunas usando AS, o sinal de igual ou a sintaxe original. Os valores válidos são asKeyword, equalsSigne preserve.
mssql.format.options.commaPlacement enumeração trailing Coloque vírgulas ao final dos itens da lista (trailing) ou no início do próximo item (leading).
mssql.format.options.leadingCommaSpaceCount inteiro 1 Número de espaços após uma vírgula inicial. Os valores válidos são 0 e 1.
mssql.format.options.persistTrailingGo bool false Preserve os separadores de lote finais GO do script original.
mssql.format.options.preserveComments bool true Preservar comentários durante a formatação.
mssql.format.options.terminateBlockStatements bool false Adicione terminadores de ponto e vírgula depois dos blocos BEGIN...END e TRY...CATCH.

Recuo

Setting Tipo Default Description
mssql.format.options.indentSetClause bool false Cláusulas de SET recuo em UPDATE declarações.
mssql.format.options.indentViewBody bool false Recuar corpos VIEW.

Várias linhas

Setting Tipo Default Description
mssql.format.options.multilineGroupByElementsList bool false Formate GROUP BY os elementos como uma lista multilinha.
mssql.format.options.multilineHavingPredicatesList bool true Formate HAVING predicados separados por AND ou OR em múltiplas linhas.
mssql.format.options.multilineInsertSourcesList bool true Formate INSERT as fontes como listas multilinhas.
mssql.format.options.multilineInsertTargetsList bool true Formate INSERT as colunas como listas multilinhas.
mssql.format.options.multilineInValuesList bool false Formate valores em um predicado IN como uma lista de várias linhas.
mssql.format.options.multilineNestedFunctionCalls bool false Formate chamadas de função aninhadas em linhas separadas com indentação, mantendo as chamadas de função isoladas em uma única linha.
mssql.format.options.multilineOrderByElementsList bool false Formate ORDER BY os elementos como uma lista multilinha.
mssql.format.options.multilinePartitionByElementsList bool false Formate elementos PARTITION BY em especificações de janela como uma lista de várias linhas.
mssql.format.options.multilineProcedureParametersList bool false Formate parâmetros de procedimento e função em linhas separadas.
mssql.format.options.multilineSelectElementsList bool true Formate SELECT as colunas como listas multilinhas.
mssql.format.options.multilineSetClauseItems bool true Formate SET os itens da cláusula como listas multilinhas.
mssql.format.options.multilineViewColumnsList bool true Formate VIEW as colunas como listas multilinhas.
mssql.format.options.multilineWherePredicatesList bool true Formate WHERE os predicados como listas de várias linhas.
mssql.format.options.multilineWithOptionsList bool false Formate os valores da cláusula suportados por WITH e OPTION em linhas separadas.

Nova linha

Setting Tipo Default Description
mssql.format.options.newLineAfterJoinKeyword bool true Coloque a fonte da tabela unida em uma nova linha após a JOIN palavra-chave.
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true Coloque uma nova linha antes do parêntese final de uma lista multilinha.
mssql.format.options.newLineBeforeFromClause bool true Coloque uma nova linha antes da FROM cláusula.
mssql.format.options.newLineBeforeGroupByClause bool true Coloque uma nova linha antes da GROUP BY cláusula.
mssql.format.options.newLineBeforeHavingClause bool true Coloque uma nova linha antes da HAVING cláusula.
mssql.format.options.newLineBeforeJoinClause bool true Insira uma nova linha antes das cláusulas JOIN.
mssql.format.options.newLineBeforeOffsetClause bool true Coloque uma nova linha antes da OFFSET cláusula.
mssql.format.options.newLineBeforeOnClause bool true Coloque a cláusula ON de um JOIN em uma nova linha.
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false Coloque uma nova linha antes do parêntese inicial de uma lista multilinha.
mssql.format.options.newLineBeforeOrderByClause bool true Coloque uma nova linha antes da ORDER BY cláusula.
mssql.format.options.newLineBeforeOutputClause bool true Coloque uma nova linha antes da OUTPUT cláusula.
mssql.format.options.newLineBeforeWhereClause bool true Coloque uma nova linha antes da WHERE cláusula.
mssql.format.options.newLineBeforeWindowClause bool true Coloque uma nova linha antes da WINDOW cláusula.
mssql.format.options.newlineFormattedCheckConstraint bool false Coloque a cláusula CHECK de uma restrição em uma linha separada.
mssql.format.options.newLineFormattedIndexDefinition bool false Coloque UNIQUE, INCLUDE, e WHERE partes das definições de índices em linha em linhas separadas.

Espaçamento de declarações e lotes

Setting Tipo Default Description
mssql.format.options.numNewlinesAfterBatches inteiro 1 Número de quebras de linha após cada GO separador de lote, de 0 até 5.
mssql.format.options.numNewlinesAfterBatchStatement inteiro 2 Número de quebras de linha após cada instrução de nível superior em um lote, de 0 até 5.
mssql.format.options.numNewlinesAfterStatement inteiro 1 Número de quebras de linha após cada afirmação, de 0 até 5.

Spacing

Setting Tipo Default Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true Insira um espaço entre um tipo de dado e seus parênteses, por exemplo VARCHAR (255).
mssql.format.options.spaceBetweenParametersInDataType bool true Insira espaços entre parâmetros em um tipo de dado, por exemplo DECIMAL (10, 2).

Exemplo de arquivo de configurações

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

Defina o formador padrão

Para definir a extensão MSSQL como padrão, selecione Configurar Formatador Padrão...>SQL Server (mssql), ou adicionar a seguinte configuração asettings.json:

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