Formatteren Transact-SQL in de MSSQL-extensie voor Visual Studio Code

Consistente opmaak maakt Transact-SQL (T-SQL) gemakkelijker te lezen, te controleren en te onderhouden, met name wanneer meerdere personen bijdragen aan dezelfde codebasis. De MSSQL-extensie voor Visual Studio Code bevat een ingebouwde SQL-formatter die je op aanvraag kunt uitvoeren, kunt instellen voor automatische opmaak bij het opslaan en kunt aanpassen via Visual Studio Code-instellingen.

De T-SQL-formatteringsfunctionaliteit in de MSSQL-extensie is gebouwd op ScriptDOM, een open-source .NET-bibliotheek die T-SQL parseert en scripts genereert op basis van abstracte syntaxisbomen.

Formattering op aanvraag

Je kunt T-SQL in elk editorvenster formatteren. De formatter werkt op het hele document of alleen op de tekst die je selecteert.

Om T-SQL op aanvraag te formatteren, gebruik een van de volgende methoden:

  • Contextmenu: Klik met de rechtermuisknop in een T-SQL-editorvenster en selecteer Document formatteren of Formaatselectie.

  • Command Palette: Voer Document opmaken of Selectie opmaken uit.

  • Sneltoets: Voor Document formatteren drukt u op Shift+Alt+F in Windows en Linux, of op macOS op Shift+Option+F. Voor formaatselectie druk je op Ctrl+K, Ctrl+F op Windows en Linux, of op Cmd+K, Cmd+F op macOS.

Opmaak bij opslaan

In Visual Studio Code regelt de standaard editorinstelling het formaat bij het opslaan, in plaats van een speciale MSSQL-formatinstelling.

Gebruik de volgende instellingen in je Visual Studio Code-bestand settings.json om T-SQL automatisch te formatteren telkens wanneer je een bestand opslaat:

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

Opmaakopties configureren

Configureer de opmaakinstellingen in de instellingeninterface van Visual Studio Code of in gebruikers- of werkruimte-settings.json.

Zoek in de instellingeneditor naar Mssql>Format om de beschikbare opties te bekijken. In settings.json, gebruik de bijbehorende mssql.format.* instellingen.

Ondersteunde instellingen

De volgende instellingen configureren de SQL-formatter.

Algemeen

Setting Type Default Description
mssql.format.showParseErrorNotification bool true Toon een melding wanneer de formatter de T-SQL niet volledig kan parsen.
mssql.format.options.sqlVersion enum sql170 T-SQL-versie gebruikt om opgemaakte scripts te parsen en te genereren.
mssql.format.options.sqlEngineType enum all Database Engine-type gebruikt om opgemaakte scripts te parsen en te genereren. Geldige waarden zijn all, standalone en sqlAzure.

Uitlijning

Setting Type Default Description
mssql.format.options.alignClauseBodies bool true Lichamen van FROM, WHERE, GROUP BY en vergelijkbare clausules uitlijnen.
mssql.format.options.alignColumnDefinitionFields bool true Lijn kolomdefinitievelden uit, zoals namen, datatypes en constraints.
mssql.format.options.alignSetClauseItem bool true Lijn SET clausule-items uit in UPDATE statements.
mssql.format.options.clauseBodyAlignment enum aligned Houd de clausule-bodies aligned met hun trefwoorden of plaats ze op de volgende regel als indented.

Behuizing en identificaties

Setting Type Default Description
mssql.format.options.builtInFunctionCasing enum preserve Casingstijl voor ondersteunde ingebouwde functienamen, zoals GETDATE en COALESCE. Geldige waarden zijn preserve, uppercase, lowercase en pascalCase.
mssql.format.options.identifierBracketing enum preserve Behoud, voeg toe of verwijder optionele vierkante haakjes rond de identificaties. Geldige waarden zijn preserve, includeBrackets en excludeBrackets. Vereiste haakjes blijven behouden.
mssql.format.options.identifierCasing enum preserve Casingstijl voor objectidentificaties. Geldige waarden zijn preserve, uppercase, lowercase en pascalCase.
mssql.format.options.keywordCasing enum uppercase Stijl voor trefwoordbehuizing. Geldige waarden zijn uppercase, lowercase en pascalCase.

Paths

Setting Type Default Description
mssql.format.options.allowExternalLanguagePaths bool true Laat externe taalinhoud bestandspaden gebruiken.
mssql.format.options.allowExternalLibraryPaths bool true Laat externe bibliotheekinhoud bestandspaden gebruiken.

Opmaak

Setting Type Default Description
mssql.format.options.asKeywordOnOwnLine bool true Plaats AS op een aparte regel.
mssql.format.options.columnAliasStyle enum asKeyword Formateer kolomaliassen met AS, een gelijkheidsteken of de oorspronkelijke syntaxis. Geldige waarden zijn asKeyword, equalsSign en preserve.
mssql.format.options.commaPlacement enum trailing Plaats komma's aan het einde van lijstitems (trailing) of aan het begin van het volgende item (leading).
mssql.format.options.leadingCommaSpaceCount integer 1 Aantal spaties na een leidende komma. Geldige waarden zijn 0 en 1.
mssql.format.options.persistTrailingGo bool false Behoud de afsluitende GO batchscheidingstekens uit het originele script.
mssql.format.options.preserveComments bool true Opmerkingen behouden tijdens de opmaak.
mssql.format.options.terminateBlockStatements bool false Voeg puntkomma-afsluiters toe na de blokken BEGIN...END en TRY...CATCH.

Inspringing

Setting Type Default Description
mssql.format.options.indentSetClause bool false Laat SET-clausules inspringen in UPDATE-statements.
mssql.format.options.indentViewBody bool false Induik VIEW lichamen.

Meerdere regels

Setting Type Default Description
mssql.format.options.multilineGroupByElementsList bool false Formatteer GROUP BY elementen als een lijst met meerdere regels.
mssql.format.options.multilineHavingPredicatesList bool true Formateer HAVING predicaten gescheiden door AND of OR op meerdere regels.
mssql.format.options.multilineInsertSourcesList bool true Formateer INSERT bronnen als meerregelige lijsten.
mssql.format.options.multilineInsertTargetsList bool true Formatteer INSERT kolommen als meerlijnige lijsten.
mssql.format.options.multilineInValuesList bool false Formatteer waarden in een IN predicaat als een meerlijnige lijst.
mssql.format.options.multilineNestedFunctionCalls bool false Maak geneste functieaanroepen op op afzonderlijke, ingesprongen regels, terwijl losstaande functieaanroepen op één regel blijven.
mssql.format.options.multilineOrderByElementsList bool false Formatteer ORDER BY elementen als een lijst met meerdere regels.
mssql.format.options.multilinePartitionByElementsList bool false Formatteren PARTITION BY elementen in vensterspecificaties als een lijst met meerdere regels.
mssql.format.options.multilineProcedureParametersList bool false Formaatprocedure- en functieparameters op aparte regels.
mssql.format.options.multilineSelectElementsList bool true Formatteer SELECT kolommen als meerlijnige lijsten.
mssql.format.options.multilineSetClauseItems bool true Formateer SET clausule-items als meerregelige lijsten.
mssql.format.options.multilineViewColumnsList bool true Formatteer VIEW kolommen als meerlijnige lijsten.
mssql.format.options.multilineWherePredicatesList bool true Formateer WHERE predicaten als meerregelige lijsten.
mssql.format.options.multilineWithOptionsList bool false Plaats ondersteunde clausulewaarden voor WITH en OPTION op aparte regels.

Nieuwe regel

Setting Type Default Description
mssql.format.options.newLineAfterJoinKeyword bool true Plaats de gekoppelde tabel bron op een nieuwe regel na het JOIN trefwoord.
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true Plaats een nieuwe regel vóór de slothaak van een lijst met meerdere regels.
mssql.format.options.newLineBeforeFromClause bool true Plaats een nieuwe regel vóór de FROM clausule.
mssql.format.options.newLineBeforeGroupByClause bool true Plaats een nieuwe regel vóór de GROUP BY clausule.
mssql.format.options.newLineBeforeHavingClause bool true Plaats een nieuwe regel vóór de HAVING clausule.
mssql.format.options.newLineBeforeJoinClause bool true Plaats een nieuwe regel vóór JOIN de clausules.
mssql.format.options.newLineBeforeOffsetClause bool true Plaats een nieuwe regel vóór de OFFSET clausule.
mssql.format.options.newLineBeforeOnClause bool true Plaats de ON clausule van een join op een nieuwe lijn.
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false Plaats een nieuwe regel vóór de openingshaak van een lijst met meerdere regels.
mssql.format.options.newLineBeforeOrderByClause bool true Plaats een nieuwe regel vóór de ORDER BY clausule.
mssql.format.options.newLineBeforeOutputClause bool true Plaats een nieuwe regel vóór de OUTPUT clausule.
mssql.format.options.newLineBeforeWhereClause bool true Plaats een nieuwe regel vóór de WHERE clausule.
mssql.format.options.newLineBeforeWindowClause bool true Plaats een nieuwe regel vóór de WINDOW clausule.
mssql.format.options.newlineFormattedCheckConstraint bool false Plaats de CHECK clausule van een beperking op een eigen lijn.
mssql.format.options.newLineFormattedIndexDefinition bool false Plaats UNIQUE, INCLUDE, en WHERE delen van inline indexdefinities op aparte regels.

Instructie en afstand tussen batches

Setting Type Default Description
mssql.format.options.numNewlinesAfterBatches integer 1 Aantal regelafbrekingen na elke GO batchscheider, van 0 tot 5.
mssql.format.options.numNewlinesAfterBatchStatement integer 2 Aantal regelafbrekingen na elke top-level statement in een batch, vanaf 0 .5
mssql.format.options.numNewlinesAfterStatement integer 1 Aantal regelafbrekingen na elke stelling, van 0 tot en met 5.

Spacing

Setting Type Default Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true Voeg bijvoorbeeld een ruimte in tussen een datatype en zijn haakjes.VARCHAR (255)
mssql.format.options.spaceBetweenParametersInDataType bool true Voeg bijvoorbeeld ruimtes in tussen parameters in een datatype, bijvoorbeeld DECIMAL (10, 2).

Voorbeeldinstellingenbestand

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

Stel de standaard formattering in

Om de MSSQL-extensie als standaard in te stellen, kies je Configure Default Formatter...>SQL Server (mssql), of voeg de volgende configuratie toe aansettings.json:

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