Formatear Transact-SQL en la extensión MSSQL para Visual Studio Code

El formato coherente facilita la lectura, revisión y mantenimiento de Transact-SQL (T-SQL), especialmente cuando varias personas contribuyen al mismo código base. La extensión MSSQL para Visual Studio Code incluye un formateador de SQL integrado que puedes ejecutar cuando lo necesites, configurar para que dé formato automáticamente al guardar y personalizar a través de la configuración de Visual Studio Code.

La funcionalidad de formateo T-SQL en la extensión MSSQL está construida sobre ScriptDOM, una biblioteca .NET de código abierto que analiza T-SQL y genera scripts basados en árboles de sintaxis abstracta.

Formato a petición

Puedes formatear T-SQL en cualquier ventana del editor. El formador funciona sobre todo el documento o solo sobre el texto que seleccionas.

Para formatear T-SQL bajo demanda, utiliza uno de los siguientes métodos:

  • Menú contextual: Haz clic derecho en una ventana del editor T-SQL y selecciona Formatear documento o Selección de formato.

  • Paleta de comandos: Ejecutar documento de formato o selección de formato.

  • Acceso directo de teclado: Para Formatear documento, pulsa Shift+Alt+F en Windows y Linux, o Shift+Option+F en macOS. Para la selección de formato, pulsa Ctrl+K, Ctrl+F en Windows y Linux, o Cmd+K, Cmd+F en macOS.

Formatear al guardar

En Visual Studio Code, la configuración estándar del editor controla el formato al guardar, en lugar de una configuración dedicada de formateador MSSQL.

Utiliza las siguientes configuraciones en tu archivo Visual Studio Code settings.json para formatear T-SQL automáticamente cada vez que guardes un archivo:

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

Configuración de las opciones de formato

Configura el formato en la interfaz de configuración de Visual Studio Code o en usuario o espacio de trabajosettings.json.

En el editor de Configuración, buscaFormatoMssql> para ver las opciones disponibles. En settings.json, utiliza los ajustes correspondientes de mssql.format.*.

Configuraciones admitidas

Las siguientes configuraciones configuran el formateador SQL.

General

Configuración Tipo Predeterminado Description
mssql.format.showParseErrorNotification bool true Muestra una notificación cuando el formatador no pueda analizar completamente el T-SQL.
mssql.format.options.sqlVersion enumeración sql170 Versión de T-SQL utilizada para analizar y generar scripts formateados.
mssql.format.options.sqlEngineType enumeración all Tipo Motor de base de datos usado para analizar y generar scripts formateados. Los valores válidos son all, standaloney sqlAzure.

Alineación

Configuración Tipo Predeterminado Description
mssql.format.options.alignClauseBodies bool true Alinee los cuerpos de FROM, WHERE, GROUP BY y cláusulas similares.
mssql.format.options.alignColumnDefinitionFields bool true Alinea los campos de definición de columna, como nombres, tipos de datos y restricciones.
mssql.format.options.alignSetClauseItem bool true Alinear SET los elementos de las cláusulas en las UPDATE sentencias.
mssql.format.options.clauseBodyAlignment enumeración aligned Mantén los cuerpos aligned de las cláusulas con sus palabras clave o colócalos en la siguiente línea como indented.

Carcasa e identificadores

Configuración Tipo Predeterminado Description
mssql.format.options.builtInFunctionCasing enumeración preserve Estilo de carcasa para nombres de funciones incorporadas soportadas, como GETDATE y COALESCE. Los valores válidos son preserve, uppercase, lowercase y pascalCase.
mssql.format.options.identifierBracketing enumeración preserve Conserva, añade o elimina corchetes opcionales alrededor de los identificadores. Los valores válidos son preserve, includeBracketsy excludeBrackets. Se conservan los corchetes obligatorios.
mssql.format.options.identifierCasing enumeración preserve Estilo de carcasa para identificadores de objetos. Los valores válidos son preserve, uppercase, lowercase y pascalCase.
mssql.format.options.keywordCasing enumeración uppercase Estilo de uso de mayúsculas y minúsculas en palabras clave. Los valores válidos son uppercase, lowercasey pascalCase.

Paths

Configuración Tipo Predeterminado Description
mssql.format.options.allowExternalLanguagePaths bool true Permite que el contenido de idiomas externos use rutas de archivo.
mssql.format.options.allowExternalLibraryPaths bool true Permite que el contenido externo de la biblioteca use rutas de archivo.

Formatting

Configuración Tipo Predeterminado Description
mssql.format.options.asKeywordOnOwnLine bool true Coloque AS en su propia línea.
mssql.format.options.columnAliasStyle enumeración asKeyword Da formato a los alias de columna usando AS, un signo igual o su sintaxis original. Los valores válidos son asKeyword, equalsSigny preserve.
mssql.format.options.commaPlacement enumeración trailing Coloca las comas al final de los elementos de la lista (trailing) o al comienzo del siguiente elemento (leading).
mssql.format.options.leadingCommaSpaceCount integer 1 Número de espacios después de una coma inicial. Los valores válidos son 0 y 1.
mssql.format.options.persistTrailingGo bool false Conserva los separadores de lotes posteriores GO del guion original.
mssql.format.options.preserveComments bool true Mantener los comentarios durante el formateo.
mssql.format.options.terminateBlockStatements bool false Añade terminadores de punto y coma después de los bloques BEGIN...END y TRY...CATCH.

Sangría

Configuración Tipo Predeterminado Description
mssql.format.options.indentSetClause bool false Cláusulas de SET sangría en UPDATE las declaraciones.
mssql.format.options.indentViewBody bool false Cuerpos VIEW hundidos.

Multilínea

Configuración Tipo Predeterminado Description
mssql.format.options.multilineGroupByElementsList bool false Formatea GROUP BY los elementos como una lista multilínea.
mssql.format.options.multilineHavingPredicatesList bool true Predicados de formato HAVING separados por AND o OR en múltiples líneas.
mssql.format.options.multilineInsertSourcesList bool true Formatea INSERT las fuentes como listas de varias líneas.
mssql.format.options.multilineInsertTargetsList bool true Formatea INSERT las columnas como listas de varias líneas.
mssql.format.options.multilineInValuesList bool false Dar formato a los valores de un predicado IN como una lista de varias líneas.
mssql.format.options.multilineNestedFunctionCalls bool false Formatear llamadas a funciones anidadas en líneas sangradas separadas mientras mantienen llamadas a funciones aisladas en una línea.
mssql.format.options.multilineOrderByElementsList bool false Formatea ORDER BY los elementos como una lista multilínea.
mssql.format.options.multilinePartitionByElementsList bool false Formatea los elementos PARTITION BY en las especificaciones de ventana como una lista de varias líneas.
mssql.format.options.multilineProcedureParametersList bool false Formatea los parámetros del procedimiento y de la función en líneas separadas.
mssql.format.options.multilineSelectElementsList bool true Formatea SELECT las columnas como listas de varias líneas.
mssql.format.options.multilineSetClauseItems bool true Formatea los elementos de la cláusula SET como listas de varias líneas.
mssql.format.options.multilineViewColumnsList bool true Formatea VIEW las columnas como listas de varias líneas.
mssql.format.options.multilineWherePredicatesList bool true Formatea WHERE los predicados como listas multilínea.
mssql.format.options.multilineWithOptionsList bool false Dar formato a los valores de cláusula compatibles WITH y OPTION en líneas separadas.

Nueva línea

Configuración Tipo Predeterminado Description
mssql.format.options.newLineAfterJoinKeyword bool true Coloca la fuente de la tabla unida en una nueva línea después de la JOIN palabra clave.
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true Coloca una nueva línea antes del paréntesis final de una lista de varias líneas.
mssql.format.options.newLineBeforeFromClause bool true Coloca una nueva línea antes de la FROM cláusula.
mssql.format.options.newLineBeforeGroupByClause bool true Coloca una nueva línea antes de la GROUP BY cláusula.
mssql.format.options.newLineBeforeHavingClause bool true Coloca una nueva línea antes de la HAVING cláusula.
mssql.format.options.newLineBeforeJoinClause bool true Coloca una nueva línea antes de JOIN las cláusulas.
mssql.format.options.newLineBeforeOffsetClause bool true Coloca una nueva línea antes de la OFFSET cláusula.
mssql.format.options.newLineBeforeOnClause bool true Coloca la cláusula ON de una unión en una nueva línea.
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false Coloca una nueva línea antes del paréntesis inicial de una lista de varias líneas.
mssql.format.options.newLineBeforeOrderByClause bool true Coloca una nueva línea antes de la ORDER BY cláusula.
mssql.format.options.newLineBeforeOutputClause bool true Coloca una nueva línea antes de la OUTPUT cláusula.
mssql.format.options.newLineBeforeWhereClause bool true Coloca una nueva línea antes de la WHERE cláusula.
mssql.format.options.newLineBeforeWindowClause bool true Coloca una nueva línea antes de la WINDOW cláusula.
mssql.format.options.newlineFormattedCheckConstraint bool false Coloca la CHECK cláusula de una restricción en una línea aparte.
mssql.format.options.newLineFormattedIndexDefinition bool false Coloca UNIQUE, INCLUDE, y WHERE porciones de definiciones de índices en línea en líneas separadas.

Espaciado entre instrucciones y lotes

Configuración Tipo Predeterminado Description
mssql.format.options.numNewlinesAfterBatches integer 1 Número de saltos de línea después de cada separador de lote GO, desde 0 hasta 5.
mssql.format.options.numNewlinesAfterBatchStatement integer 2 Número de saltos de línea tras cada sentencia de nivel superior en un lote, desde 0 hasta 5.
mssql.format.options.numNewlinesAfterStatement integer 1 Número de saltos de línea tras cada afirmación, desde 0 hasta 5.

Spacing

Configuración Tipo Predeterminado Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true Inserte un espacio entre un tipo de dato y sus paréntesis, por ejemplo VARCHAR (255).
mssql.format.options.spaceBetweenParametersInDataType bool true Inserte espacios entre parámetros en un tipo de datos, por ejemplo, DECIMAL (10, 2).

Ejemplo de archivo de configuración

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

Establecer el formador por defecto

Para establecer la extensión MSSQL como predeterminada, selecciona Configurar Formateador por defecto...>SQL Server (mssql), o añadir la siguiente configuración asettings.json:

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