SQL Formatter Options
SQLinForm Options Help
SQLinForm formats SQL through 220 options, grouped the same way in every edition – the VS Code extension, JetBrains, SSMS, Notepad++ and the online formatter. Each page below documents one group: what every option does, its default, and a before/after example. The option IDs are the keys stored inside a profile file, so they are the same wherever you use SQLinForm.
Global formatting
Settings that apply to every statement, whatever the SQL command.
Statements
Linebreaks and indentation clause by clause, per SQL command.
Lists and expressions
Constructs that appear inside a clause rather than around it.
DECODE with twenty branches, an IN list of literals, a COALESCE across many columns.
Conditions in BracketsWhen a WHERE or HAVING clause groups conditions with brackets, the brackets carry the logic: they decide what binds to what.
Analytic Expressions - OVERWindow functions such as ROW_NUMBER() OVER (PARTITION BY … ORDER BY …) pack a whole sub-language into one bracketed expression, frequently inside an already long column list.
CASEA CASE expression is a decision table written inline, and it benefits more than any other construct from consistent formatting: with each WHEN on its own line, the branches can be compared vertically.
DDL and procedural code
CREATE statements, and the code inside stored procedures and functions.
INTO target list, and similar constructs outside a regular SELECT.
Beyond formatting
Working with SQL that lives inside application source code.
220 options across 24 pages. Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
General Options
The General Options apply to every statement SQLinForm formats, regardless of the SQL command. Start here: pick your database dialect, decide how deep one indentation level is, and tell the formatter which characters mark strings and statement boundaries in your code. Everything on the other option pages builds on these settings.
General Options
| ID | Option | What it does | Default |
|---|---|---|---|
| ID033 | FreeYour Database SRCE_DB | Sets the SQL dialect. The parser then recognises the keywords, data types, functions and proprietary syntax of that database – for example CONNECT BY in Oracle or QUALIFY in Snowflake. Choose ANSI SQL if your scripts must work across several systems.Choices: ANSI SQL, Athena, Aurora, Azure, BigQuery, ClickHouse, Databricks SQL, DB2 zOS/UDB, DuckDB, Greenplum ... (28 in total) | ANSI SQL |
| ID002 | FreeGeneral Number of Spaces for Indention GEN_NBR_SPACES_INDENT | Defines how many spaces make up one indentation level. Every Indent option on the other pages is a multiple of this value, so changing it here rescales the whole document. Choices: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ... (21 in total) | 4 |
| ID071 | FreeUse the Backslash Character as Escape Character SRCE_USE_ESCAPECHARACTER | Treats a backslash inside a string literal as an escape character, as MySQL does by default. Leave this off for databases where a backslash is an ordinary character, otherwise string literals containing Windows paths will be misread. | off |
| ID018 | FreeDecimal Point is Comma GEN_DECIMALPOINT_IS_COMMA | Tells the parser that a comma between two digits is a decimal separator, not a list separator. Without it, a literal such as 1,50 would be split across two lines. | on |
| ID160 | FreeStatement Delimiter Character DELIMITER1 | The character that terminates a statement. SQLinForm uses it to tell one statement from the next when formatting a whole script. | ; |
| ID007 | FreeQuote Character SRCE_QUOTECHAR | The character that encloses string literals. Everything between two of these characters is passed through unchanged – no casing, no linebreaks, no alignment. | ' |
ID002 sets the width of one indentation level. Every "Indent" option elsewhere is a multiple of it.
ID002 = 2
select dept_nbr, dept_name from dept
ID002 = 4
select dept_nbr, dept_name from dept
Tip: ID033 should match the database you actually run against. It decides which keywords and functions the parser recognises – with the wrong dialect, proprietary syntax is treated as plain identifiers and stays unformatted.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Upper/Lower Keywords
These options control letter casing. Most teams settle on one convention – keywords in upper case, table and column names in lower case – and let the formatter enforce it, so that casing never has to be discussed in a code review again. You can also maintain your own keyword list for words the parser does not recognise as SQL keywords.
Upper/Lower Keywords
Lower/Upper Case Options
ID157 acts on the whole statement and overrides the two options below it. Leave it at NONE if you want keywords and identifiers cased differently.
| ID | Option | What it does | Default |
|---|---|---|---|
| ID157 | ProSelect CASE for complete SQL Statement CASE_STATEMENT | Applies one casing rule to the entire statement. If set to UPPER or LOWER it overrides the two options below, so use it only when you want no distinction between keywords and identifiers. Choices: NONE No Change · UPPER UPPER CASE FOR WHOLE STATEMENT · LOWER lower case for whole statement | NONE |
| ID003 | ProSelect CASE for Keywords CASE_KEYWORDS | Casing for recognised SQL keywords. UPPER is the most common convention, because it separates the language from your identifiers at a glance.Choices: NONE No Change · UPPER UPPER CASE KEYWORDS · LOWER lower case keywords | NONE |
| ID158 | ProSelect CASE for Non-Keywords CASE_NONKEYWORDS | Casing for everything that is not a keyword: table names, column names, aliases. CAMEL converts order_date to OrderDate. Leave at NONE if your database is case-sensitive.Choices: NONE No Change · UPPER UPPER CASE FOR NONKEYWORDS · LOWER lower case for nonkeywords · CAMEL CamelCase For NonKeywords | NONE |
ID003 = NONE
Select Dept_Nbr, Dept_Name From Dept Where Dept_Zip = '64521'
ID003 = UPPER, ID158 = LOWER
SELECT dept_nbr, dept_name FROM dept WHERE dept_zip = '64521'
My Lower/Upper Case Keywords
| ID | Option | What it does | Default |
|---|---|---|---|
| ID113 | ProMy Lower/Upper Case Keywords CASE_KEYWORDLIST | Your own keyword list, one word per line. Words listed here follow the keyword casing rule even when the parser does not know them – useful for user-defined functions, package names or dialect keywords. | MyKeyword1 |
ID113 contains one word per line, here nvl and decode. Listed words then follow the keyword casing rule ID003.
Not listed in ID113
select nvl(bonus, 0), decode(job, 'M', 'Mgr') from employee
Listed in ID113, ID003 = UPPER
select NVL(bonus, 0), DECODE(job, 'M', 'Mgr') from employee
Tip: Use this for user-defined functions, package names and dialect keywords the parser does not know. It only affects casing – not linebreaks.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Alignment
Alignment is what turns a correctly indented statement into a readable one. SQLinForm can line up commas, aliases, equal signs, arithmetic operators and concatenation operators into vertical columns, so that the eye can scan a long column list or a wide WHERE clause without reading every character.
Alignment
Comma Alignment
| ID | Option | What it does | Default |
|---|---|---|---|
| ID066 | ProAlign Commas ALI_COMMA | Lines the commas of a column list into one vertical column. Only has a visible effect when several entries share a line, or when leading commas are used. | on |
Visible whenever several entries share a line, or when leading commas are used.
ID066 off
select emp_nbr, emp_name, dept, hire_date, salary, bonus from employee
ID066 on
select emp_nbr , emp_name, dept , hire_date, salary , bonus from employee
Alias Alignment
| ID | Option | What it does | Default |
|---|---|---|---|
| ID049 | ProAlign ALIAS ALI_AS | Lines up all column aliases at the same position, so the result column names can be read as a list independently of the expressions that produce them. Mutually exclusive with ID073. | on |
ID049 off
select dept_nbr as nbr, employee_name as name, salary_amount as sal from employee
ID049 on
select dept_nbr as nbr, employee_name as name, salary_amount as sal from employee
Equal Sign & Operators
| ID | Option | What it does | Default |
|---|---|---|---|
| ID073 | ProAlign ALIAS at the Position specified in the next Option I... ALI_ASPOSITION | Puts the alias at a fixed column instead of at a position calculated from the longest expression. Fixed positions keep two similar statements comparable side by side; dynamic positions produce more compact output. Mutually exclusive with ID049. | off |
| ID074 | ProSpecify Position to align ALIAS ALI_ASPOSITIONVALUE | The fixed column number used when the option above is switched on. | 60 |
| ID031 | ProAlign Equal Signs ( '=', '==', '<', '>', etc ALI_EQUAL | Aligns comparison operators in conditions and assignments, so that the left- and right-hand sides form two readable columns. | on |
| ID032 | ProAlign Operators ( '+', '-', '*', ALI_OPERATOR | Aligns arithmetic operators in calculations. Off by default, because it makes sense mainly in expression-heavy statements. | off |
| ID060 | ProAlign '||' Concat Operator ALI_CONCAT | Aligns the concatenation operator, which is useful in the long string-building expressions typical of reporting queries. | on |
ID031 lines up the comparison operators, which splits a condition list into a readable left and right column.
ID031 off
where dept_name = 'Sales' and employee_nbr >= 100 and zip = '64521'
ID031 on
where dept_name = 'Sales' and employee_nbr >= 100 and zip = '64521'
Tip: ID073 with ID074 pins the alias to a fixed column instead of a calculated one. Fixed positions keep two similar statements comparable side by side; calculated positions produce more compact output.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Output Format
These options govern the shape of the formatted result rather than any single SQL keyword: how long a line may become before it is wrapped, and which parts of your script the formatter must leave completely untouched.
Output Format
NO-FORMATTING Sections
| ID | Option | What it does | Default |
|---|---|---|---|
| ID105 | ProNo Formatting between '-- FORMAT_OFF' (iD106) and '-- FORM... NOFORMATBETWEEN | Enables the protected region below. Everything between the two markers is copied to the output byte for byte – the escape hatch for hand-tuned SQL that no formatter should touch. | on |
| ID106 | ProSpecify the String to indicate the Start of the Non-Format... NOFORMATSTART | The marker that opens the protected region. Write it in your SQL as a comment, for example -- FORMAT_OFF. | FORMAT_OFF |
| ID107 | ProSpecify the String to indicate the End of the Non-Formatti... NOFORMATEND | The marker that closes the protected region, for example -- FORMAT_ON. | FORMAT_ON |
Everything between the two markers is copied to the output byte for byte.
-- FORMAT_OFF select a , b from t where a=1 -- FORMAT_ON select b, c from t2
Tip: The markers are written as comments in your SQL: prefix the string from ID106 / ID107 with --. This is the escape hatch for hand-tuned statements no formatter should touch.
Line Length
| ID | Option | What it does | Default |
|---|---|---|---|
| ID022 | ProLine Length LB_PAGEWIDTH | The column at which a line is wrapped. The default of 9999 effectively disables wrapping and lets the linebreak options alone decide. Set it to your team's review width – 80, 100 or 120 – to prevent horizontal scrolling. | 9999 |
ID022 = 9999 (no wrapping)
select employee_name, dept_name, salary_amount, hire_dateID022 = 40
select employee_name, dept_name,
salary_amount, hire_dateTip: Set this to the review width your team uses – 80, 100 or 120 – so that no formatted statement ever needs horizontal scrolling in a diff.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Comments
SQLinForm never changes the text of a comment, but it can decide where a comment sits: on its own line or trailing, aligned into a column, converted between line and block style, or removed entirely. Useful when you inherit a script whose comments have drifted out of place over the years.
Comments
Line Comments
| ID | Option | What it does | Default |
|---|---|---|---|
| ID076 | ProAdd Linebreak Before Line Comments LBB_LINECOMMENT | Puts a line comment on its own line instead of leaving it at the end of the preceding statement line. | off |
ID076 off
select dept_nbr, -- department key dept_name from dept
ID076 on
select dept_nbr, -- department key dept_name from dept
Block Comments
| ID | Option | What it does | Default |
|---|---|---|---|
| ID077 | ProAdd Linebreak Before/After Block Comments LBB_BLOCKCOMMENT | Isolates a block comment with a linebreak before and after, so it reads as a heading between two statements. | on |
| ID050 | ProAlign Line Comments ALI_COMMENT | Aligns trailing line comments into one column, which turns a series of commented columns into a readable two-column layout. | on |
| ID115 | ProAlign Block Comments ( /* and */ ) ALI_LEFTPARACOMMENT | Aligns the opening and closing markers of block comments with each other. | on |
| ID116 | ProLeft-Align Block Comment Lines IND_PARACOMMENT | Aligns the individual lines within a multi-line block comment on the left, removing indentation inherited from wherever the comment was originally written. | on |
| ID057 | ProConvert Line Comments into Block Comments EDIT_REPL_COMMENT | Rewrites -- comments as /* */ comments. Handy when a target system or deployment tool strips line comments. | off |
| ID154 | ProConvert Block Comments into Line Comments EDIT_REPL_PARACOMMENT | The reverse: rewrites block comments as line comments. Note that a block comment spanning several lines becomes several line comments. | off |
ID050 pulls trailing line comments into one column.
ID050 off
select dept_nbr, -- key employee_name, -- full name salary -- gross amount from employee
ID050 on
select dept_nbr, -- key employee_name, -- full name salary -- gross amount from employee
Delete Comments
| ID | Option | What it does | Default |
|---|---|---|---|
| ID035 | ProDelete Comments EDIT_DEL_COMMENT | Removes all comments from the output. Irreversible – keep the original file. | off |
ID035 off
-- monthly headcount report select dept_nbr, -- key count(*) /* headcount */ from employee
ID035 on
select dept_nbr, count(*) from employee
Tip: Deleting comments cannot be undone by re-formatting – the text is gone from the output. Keep the original file.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
White Spaces
Fine-grained control over the spaces around punctuation – commas, brackets and operators – plus how blank lines from the original script are treated and whether the whole statement is shifted to the right. These are the smallest adjustments SQLinForm offers, and often the ones that make a house style feel finished.
White Spaces
White Spaces Options
| ID | Option | What it does | Default |
|---|---|---|---|
| ID040 | ProWhite Spaces Around Commas WHSP_COMMA | Spacing around commas. NONE leaves whatever spacing the source already has – it does not mean 'no spaces'. NOAROUND removes the spaces, ONEBEFORE / ONEAFTER / ONEAROUND enforce one space before, after, or on both sides.Choices: NONE No Change · NOAROUND No White Spaces Around Comma · ONEBEFORE One Space Before Comma · ONEAFTER One Space After Comma · ONEAROUND One Space Before and After Comma | NONE |
| ID036 | ProWhite Spaces Around Brackets WHSP_BRACKET | Spacing around brackets. NONE leaves the source spacing untouched, NOAROUND removes it, ONEINSIDE puts one space just inside the brackets, ONEOUTSIDE just outside, ONEAROUND on both sides.Choices: NONE No Change · NOAROUND No White Spaces Around Brackets · ONEINSIDE One Space Inside Brackets · ONEOUTSIDE One Space Outside Brackets · ONEAROUND One Space Inside and Outside Brackets | NONE |
| ID045 | ProWhite Spaces Around Operators WHSP_EQUAL | Spacing around comparison and arithmetic operators. NONE keeps the source spacing unchanged, NOAROUND removes it, and ONEAROUND enforces one space on each side, turning a=1 into a = 1.Choices: NONE No Change · NOAROUND No White Spaces Around Operators · ONEAROUND One Space Before and After Operators | NONE |
| ID072 | ProKeep Blank Lines EDIT_DELETE_EMPTYLINES | How many blank lines from the source survive: NONE keeps none, ONE collapses each run to a single blank line, ALL keeps them all.Choices: NONE Remove All Blank Lines · ONE Keep One Blank Line · ALL Keep All Blank Lines | NONE |
| ID084 | ProKeep Indention from 1st Line IND_AUTO_1STLINE | Adds the indentation the first line already had to every line of the output. Useful for SQL embedded in indented application code. The amount is added on top of ID070. | off |
ID045 controls the spacing around comparison and arithmetic operators.
ID045 = NONE (leave as is)
where a=1 and b<>2 and c>=3
ID045 = ONEAROUND
where a = 1 and b <> 2 and c >= 3
Tip: ID084 keeps the indentation the first line already had and applies it to the whole statement – useful for SQL that sits inside indented application code.
Shift Complete SQL Statement by Spaces
| ID | Option | What it does | Default |
|---|---|---|---|
| ID070 | ProShift SQL by this Amount of Spaces IND_INITIALVALUE | Shifts the complete formatted statement to the right by this number of spaces, on top of any indentation the formatter itself produces. ID084, if on, adds to this value. | 0 |
ID070 = 0
select dept_nbr from dept
ID070 = 4
select dept_nbr from dept
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
SQL Linebreaks
Two settings that act on the statement as a whole: a length threshold below which a short statement is left on one line, and how the statement delimiter is placed. They are deliberately separate from the per-keyword linebreak options, because they override them.
SQL
Small SQL Linebreaks
| ID | Option | What it does | Default |
|---|---|---|---|
| ID027 | ProNo Linebreak for SQL Statements smaller than this number o... LB_WIDTH_SMALL_SQL | Statements shorter than this many characters are left on a single line. This overrides all linebreak options and keeps trivial statements such as select count(*) from dept from being spread over four lines. | 10 |
A statement below the threshold is left on one line, whatever the linebreak options say.
ID027 = 0
select count(*) from dept
ID027 = 40
select count(*) from dept
Linebreak Delimiter
| ID | Option | What it does | Default |
|---|---|---|---|
| ID152 | FreeLinebreak Before Statement Delimiter LBB_SEMIKOLON | Puts the statement delimiter on its own line rather than directly after the last token. | off |
| ID155 | ProDouble Linebreak After Delimiter LBA_SEMIKOLON_DOUBLE | Inserts a blank line after each delimiter, which separates the statements of a long script visually. | off |
ID152 off, ID155 off
select dept_nbr from dept; select emp_nbr from employee;
ID152 on, ID155 on
select dept_nbr from dept ; select emp_nbr from employee ;
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Keyword Indention & Alignment
How the master keywords – SELECT, FROM, WHERE, GROUP BY, ORDER BY, INSERT, UPDATE, DELETE – relate to the column lists beneath them. This is the single biggest lever on the overall silhouette of a formatted statement: left-aligned block style, or right-justified so that every keyword ends at the same column.
Keyword Indention
The width is measured per statement, so it adapts to the keywords that statement actually contains. A query without a multi-word join yields the same result under SMALL and BIG.
| ID | Option | What it does | Default |
|---|---|---|---|
| ID005 | ProSelect the indention for SELECT, UPDATE, DELETE, INSERT Ma... GEN_SQL_AUTO_IND | Derives the indentation width from the keywords themselves instead of from the fixed ID002 value, so that every clause body starts in one common column. SMALL measures the longest single keyword token, BIG the longest complete keyword expression: in a query containing LEFT OUTER JOIN, SMALL counts only LEFT (4 characters) while BIG counts the whole LEFT OUTER JOIN (15). One space is added to the measured width. NONE ignores the keywords and uses the ID002 spaces per level.Choices: NONE Use General Number of Spaces for Indention · SMALL Use Small Keyword Size · BIG Use Large Keyword Size | NONE |
The same query under both settings, with ID146 "Linebreak After JOIN" switched off so the measured widths stay visible on one line. SMALL measures the longest single token (select, 6) and indents to column 8; BIG measures the longest expression (left outer join, 15) and indents to column 17. Where a keyword expression is longer than the measured width, as left outer join is under SMALL, its operand simply follows one space later.
ID005 = SMALL
select dept_nbr, dept_name from dept left outer join employee on dept.dept_nbr = employee.dept_nbr where dept_zip = '64521'
ID005 = BIG
select dept_nbr, dept_name from dept left outer join employee on dept.dept_nbr = employee.dept_nbr where dept_zip = '64521'
Tip: Because BIG scales with the longest keyword expression, a single LEFT OUTER JOIN pushes the whole statement 9 columns further right than SMALL would. On narrow review widths that is worth checking against ID022.
Keyword Alignment
Align Master Keywords
| ID | Option | What it does | Default |
|---|---|---|---|
| ID034 | ProRight-Justify Keywords ALI_RIGHTKEYWORD | Right-justifies the master keywords so that they all end at the same column and the column lists begin at a common left edge – the classic river layout. | off |
Right-justifying the master keywords gives the statement a single left edge for all clause bodies – the classic "river" layout.
ID034 off
select dept_nbr, dept_name from dept where dept_zip = '64521' group by dept_nbr
ID034 on
select dept_nbr, dept_name from dept where dept_zip = '64521' group by dept_nbr
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
SELECT
Linebreak options for every clause of a SELECT statement, clause by clause: SELECT, FROM, INTO, WHERE, HAVING, GROUP BY, ORDER BY, WINDOW, OFFSET and the set operators UNION, EXCEPT and INTERSECT. Each clause has a Linebreak Before and a Linebreak After switch, which together decide whether the keyword gets its own line.
SELECT
| ID | Option | What it does | Default |
|---|---|---|---|
| ID148 | FreeLinebreak After SELECT LBA_SELECT | Starts the column list on the line after the SELECT keyword instead of on the same line. | on |
ID148 off
select dept_nbr, dept_name from dept
ID148 on
select dept_nbr, dept_name from dept
FROM
| ID | Option | What it does | Default |
|---|---|---|---|
| ID182 | FreeLinebreak Before FROM LBB_FROM | Puts FROM on a new line, separating the column list from the table list. | on |
| ID143 | FreeLinebreak After FROM LBA_FROM | Starts the table list on the line after FROM. Switch on when queries regularly read from several tables. | on |
ID182 off, ID143 off
select dept_nbr from dept, employee
ID182 on, ID143 on
select dept_nbr from dept, employee
INTO
| ID | Option | What it does | Default |
|---|---|---|---|
| ID185 | FreeLinebreak Before INTO LBB_INTO | Puts INTO on a new line. Applies to SELECT … INTO in procedural code and to INSERT INTO. | on |
| ID159 | FreeLinebreak After INTO LBA_INTO | Starts the target list on the line after INTO. | on |
ID185 off, ID159 off
insert into employee (emp_nbr, emp_name) values (1, 'Smith')
ID185 on, ID159 on
insert into employee (emp_nbr, emp_name) values (1, 'Smith')
WHERE
The WHERE clause has two independent levels: the position of the WHERE keyword itself, and the treatment of the AND / OR operators that join the individual conditions.
WHERE
| ID | Option | What it does | Default |
|---|---|---|---|
| ID183 | FreeLinebreak Before WHERE LBB_WHERE | Puts WHERE on a new line, which marks the beginning of the filter section. | on |
| ID142 | FreeLinebreak After WHERE LBA_WHERE | Starts the first condition on the line after WHERE. Combined with the option before, WHERE then occupies a line of its own. | on |
ID183 off, ID142 off
select dept_nbr from dept where dept_zip = '64521'
ID183 on, ID142 on
select dept_nbr from dept where dept_zip = '64521'
WHERE Condition
| ID | Option | What it does | Default |
|---|---|---|---|
| ID172 | FreeLinebreak Before AND/OR in WHERE Condition LBB_WHERE_AND | Starts each new condition on its own line with the AND or OR leading it. Leading operators make the boolean structure of a long filter easy to scan. | on |
| ID173 | FreeLinebreak After AND/OR in WHERE Condition LBA_WHERE_AND | Puts the condition on the line after the operator, so that the operator alone terminates the previous line. | off |
| ID174 | FreeIndent AND/OR in WHERE Condition IND_WHERE_AND | Indents the AND / OR operators one level deeper than the WHERE keyword, which subordinates the conditions to the clause visually. | off |
Leading AND / OR operators make the boolean structure of a long filter readable top to bottom.
ID172 off
where dept_zip = '64521' and dept_nbr > 100 and active = 1
ID172 on, ID174 on
where dept_zip = '64521' and dept_nbr > 100 and active = 1
HAVING
HAVING mirrors WHERE exactly, but filters after aggregation. The options are deliberately separate so you can format the two clauses differently.
HAVING
| ID | Option | What it does | Default |
|---|---|---|---|
| ID184 | FreeLinebreak Before HAVING LBB_HAVING | Puts HAVING on a new line. | on |
| ID153 | FreeLinebreak After HAVING LBA_HAVING | Starts the first condition on the line after HAVING. | on |
ID184 off, ID153 off
select dept_nbr, sum(salary) from employee group by dept_nbr having sum(salary) > 100000
ID184 on, ID153 on
select dept_nbr, sum(salary) from employee group by dept_nbr having sum(salary) > 100000
HAVING Condition
| ID | Option | What it does | Default |
|---|---|---|---|
| ID175 | FreeLinebreak Before AND/OR in HAVING Condition LBB_HAVING_AND | Starts each condition of the HAVING clause on its own line, led by AND or OR. | on |
| ID176 | FreeLinebreak After AND/OR in HAVING Condition LBA_HAVING_AND | Puts the condition on the line after the operator. | off |
| ID177 | FreeIndent AND/OR in HAVING Condition IND_HAVING_AND | Indents the AND / OR operators of the HAVING clause one level deeper. | off |
ID175 off
having sum(salary) > 100000 and count(*) > 5
ID175 on, ID177 on
having sum(salary) > 100000 and count(*) > 5
GROUP BY
| ID | Option | What it does | Default |
|---|---|---|---|
| ID186 | FreeLinebreak Before GROUP BY LBB_GROUPBY | Puts GROUP BY on a new line. | on |
| ID145 | FreeLinebreak After GROUP BY LBA_GROUPBY | Starts the grouping list on the line after GROUP BY. | on |
| ID135 | FreeStack GROUP BY LB_STACKLISTGROUPBY | Stacks the grouping columns one per line instead of running them together. Makes it obvious whether the GROUP BY matches the non-aggregated columns of the SELECT list. | on |
ID135 stacks the grouping columns, which makes it obvious whether they match the non-aggregated columns of the SELECT list.
ID186 off, ID135 off
select dept_nbr, job, sum(salary) from employee group by dept_nbr, job
ID186 on, ID145 on, ID135 on
select dept_nbr, job, sum(salary) from employee group by dept_nbr, job
ORDER BY
| ID | Option | What it does | Default |
|---|---|---|---|
| ID187 | FreeLinebreak Before ORDER BY LBB_ORDERBY | Puts ORDER BY on a new line. | on |
| ID144 | FreeLinebreak After ORDER BY LBA_ORDERBY | Starts the sort list on the line after ORDER BY. | on |
| ID136 | FreeStack ORDER BY LB_STACKLISTORDERBY | Stacks the sort columns one per line, so that each column with its ASC or DESC is visible on its own. | on |
ID187 off, ID136 off
select dept_nbr from dept order by dept_name desc, dept_nbr
ID187 on, ID144 on, ID136 on
select dept_nbr from dept order by dept_name desc, dept_nbr
WINDOW
| ID | Option | What it does | Default |
|---|---|---|---|
| ID258 | FreeLinebreak Before WINDOW LBB_WINDOW | Puts the WINDOW clause on a new line. WINDOW names a window definition once so several analytic functions can reuse it. | on |
ID258 off
select rank() over w from employee window w as (order by salary desc)
ID258 on
select rank() over w from employee window w as (order by salary desc)
OFFSET
| ID | Option | What it does | Default |
|---|---|---|---|
| ID257 | FreeLinebreak Before OFFSET LBB_OFFSET | Puts OFFSET on a new line, together with the FETCH or LIMIT clause that usually follows it. | on |
ID257 off
select emp_name from employee order by emp_name offset 10 rows fetch next 20 rows only
ID257 on
select emp_name from employee order by emp_name offset 10 rows fetch next 20 rows only
UNION, EXCEPT, INTERSECT
| ID | Option | What it does | Default |
|---|---|---|---|
| ID256 | FreeLinebreak Before UNION, EXCEPT, INTERSECT LBB_UNION | Puts the set operator on a new line, so it separates the two queries it combines. Mutually exclusive with ID011. | on |
| ID011 | FreeDouble Linebreak before/after UNION, EXCEPT, INTERSECT LB_DOUBLEUNION | Surrounds the set operator with blank lines. In a chain of several UNIONs this is what makes the individual queries recognisable as blocks. Mutually exclusive with ID256. | on |
ID011 surrounds the operator with blank lines, which turns a chain of set operations into readable blocks.
ID256 off, ID011 off
select dept_nbr from dept union select dept_nbr from dept_archive
ID256 on, ID011 on
select dept_nbr from dept union select dept_nbr from dept_archive
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Sub-Select & CTE
A subquery or a common table expression is a complete SELECT nested inside another statement. These options decide how that nested statement is set off from its surroundings: how its brackets are placed and whether its body is indented one level deeper or aligned to the opening bracket.
Sub-Select & CTE
Align & Indent Sub-SELECT Statement
| ID | Option | What it does | Default |
|---|---|---|---|
| ID255 | ProAlign Subquery to Opening Bracket ALI_SELECT2BRACKET | Aligns the body of the subquery to the position of the opening bracket rather than indenting it by a fixed amount. Keeps deeply nested queries from drifting far to the right. | off |
| ID028 | ProIndent Sub-SELECT Statement IND_AFT_SELECTBR | Indents the subquery one level deeper than its surroundings, marking it as a nested statement. | on |
ID028 off
select dept_nbr from dept where dept_nbr in ( select dept_nbr from employee )
ID028 on
select dept_nbr from dept where dept_nbr in ( select dept_nbr from employee )
Tip: ID255 aligns the subquery body to the opening bracket instead of indenting it by a fixed amount. In deeply nested queries this keeps the code from drifting far to the right.
Sub-SELECT Brackets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID087 | ProLinebreak Before Open '(' LBB_SELECTBRACKET | Puts the opening bracket of the subquery on a new line. | on |
| ID016 | ProLinebreak After Open '(' LBA_SELECTBRACKET | Starts the subquery on the line after the opening bracket, so the bracket does not share a line with the SELECT. | on |
| ID089 | ProLinebreak Before Close ')' LBB_CLOSESELECTBRACKET | Puts the closing bracket on a new line, where it visually terminates the nested block. | off |
| ID090 | ProLinebreak After Close ')' LBA_CLOSESELECTBRACKET | Starts whatever follows the subquery – usually an alias – on the line after the closing bracket. | off |
All four off
where dept_nbr in (select dept_nbr from employee)
ID087 on, ID016 on, ID089 on
where dept_nbr in ( select dept_nbr from employee )
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
JOIN
Formatting for JOIN clauses and their ON conditions. Because a query with five joins is mostly join syntax, these options have a disproportionate effect on how quickly a reader can see which tables are combined and on which columns.
JOIN
JOIN Statement
| ID | Option | What it does | Default |
|---|---|---|---|
| ID063 | ProLinebreak Before JOIN LBB_JOIN | Puts the JOIN keyword on a new line, so that each joined table starts its own block. | on |
| ID146 | ProLinebreak After JOIN LBA_JOIN | Starts the table name on the line after the JOIN keyword. With LEFT OUTER JOIN this separates the join type from the table. | on |
| ID068 | ProIndent JOIN Statement IND_JOIN | Indents the whole JOIN clause one level deeper than FROM, subordinating the joined tables to the driving table. | off |
ID063 off, ID146 off
from dept inner join employee on dept.dept_nbr = employee.dept_nbr
ID063 on, ID146 on
from dept inner join employee on dept.dept_nbr = employee.dept_nbr
ON Condition
| ID | Option | What it does | Default |
|---|---|---|---|
| ID062 | ProLinebreak Before ON LBB_JOIN_ON | Puts ON on a new line, separating the join condition from the table name. | on |
| ID147 | ProLinebreak After ON LBA_JOIN_ON | Starts the join condition on the line after ON. | on |
| ID131 | ProIndent ON Condition IND_JOINON | Indents the ON condition one level deeper than the JOIN keyword. | off |
ID062 off, ID147 off
inner join employee on dept.dept_nbr = employee.dept_nbr
ID062 on, ID147 on
inner join employee on dept.dept_nbr = employee.dept_nbr
JOIN Condition
| ID | Option | What it does | Default |
|---|---|---|---|
| ID178 | ProLinebreak Before AND/OR in JOIN Condition LBB_JOINON_AND | Starts each additional join condition on its own line, led by AND or OR. Essential for composite keys. | on |
| ID179 | ProLinebreak After AND/OR in JOIN Condition LBA_JOINON_AND | Puts the condition on the line after the operator. | off |
| ID180 | ProIndent AND/OR in JOIN Condition IND_JOINON_AND | Indents the AND / OR operators of a multi-part join condition one level deeper. | off |
| ID156 | ProAlign AND/OR to ON ALI_JOINON_AND_TO_ON | Aligns the AND / OR operators of the join condition with the ON keyword, so that ON and its continuations form one column. Only takes effect when both ID062 and ID147 are off – if ON already gets a linebreak before or after it, there is no column to align to. | off |
ID156 aligns the continuation operators with the ON keyword, so a composite key reads as one block. It requires ID062 and ID147 to be off, as shown here.
ID178 off
on dept.dept_nbr = emp.dept_nbr and dept.region = emp.region
ID178 on, ID156 on
on dept.dept_nbr = emp.dept_nbr and dept.region = emp.region
Tip: If ON has a linebreak before or after it (ID062 / ID147, both on by default), ID156 is ignored – the formatter has no ON on the same line to align against.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
INSERT, UPDATE, DELETE
Formatting for the three DML statements. The INSERT options mostly concern the two bracketed lists – columns and values – which are easiest to compare when they are stacked with one entry per line. The UPDATE and DELETE options control the SET clause and the comma placement inside it.
INSERT
An INSERT holds two parallel bracketed lists. They are easiest to verify when both use the same layout, so that the n-th column and the n-th value sit on the same line number.
INSERT Brackets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID108 | ProLinebreak Before '(' LBB_OPENINSERTBRACKET | Puts the opening bracket of the column list on a new line. | on |
| ID109 | ProLinebreak After '(' LBA_OPENINSERTBRACKET | Starts the first column on the line after the opening bracket. | on |
| ID110 | ProLinebreak Before ')' LBB_CLOSEINSERTBRACKET | Puts the closing bracket on a new line, where it terminates the list. | on |
| ID111 | ProLinebreak After ')' LBA_CLOSEINSERTBRACKET | Starts whatever follows – usually VALUES or a SELECT – on the line after the closing bracket. | on |
All four off
insert into employee (emp_nbr, emp_name, dept_nbr) values (1, 'Smith', 10)
All four on
insert into employee ( emp_nbr, emp_name, dept_nbr ) values ( 1, 'Smith', 10 )
Columns and Values
| ID | Option | What it does | Default |
|---|---|---|---|
| ID112 | ProIndent Columns and Values IND_INSERTBRACKET | Indents the column and value lists one level deeper than the INSERT keyword. | on |
| ID149 | ProNumber of Columns or Values per Line LB_NBR_COMMASINSERTPERLINE | How many columns or values share one line. 1 makes the n-th column and the n-th value line up on the same line number, which is the fastest way to check a wide INSERT.Choices: 1, 2, 3, 4 | 1 |
With one entry per line the n-th column and the n-th value share a line number, which is the fastest way to verify a wide INSERT.
ID149 = 4
(
emp_nbr, emp_name, dept_nbr, hire_date
)
values
(
1, 'Smith', 10, '2026-01-15'
)ID149 = 1
(
emp_nbr,
emp_name,
dept_nbr,
hire_date
)
values
(
1,
'Smith',
10,
'2026-01-15'
)Commas
| ID | Option | What it does | Default |
|---|---|---|---|
| ID207 | ProLinebreak Before Comma LBB_COMMAINSERT | Puts the comma at the start of the next line rather than at the end of the current one. | off |
| ID208 | ProLinebreak After Comma LBA_COMMAINSERT | Starts the next entry on the line after the comma – the conventional trailing-comma style. | on |
ID208 on (trailing comma)
(
emp_nbr,
emp_name,
dept_nbr
)ID207 on (leading comma)
(
emp_nbr
, emp_name
, dept_nbr
)UPDATE, DELETE
UPDATE
| ID | Option | What it does | Default |
|---|---|---|---|
| ID150 | FreeLinebreak After UPDATE LBA_UPDATE | Starts the table name on the line after UPDATE. | on |
| ID209 | ProLinebreak Before Comma LBB_COMMAUPDATE | Leading commas in the SET clause: the comma opens the line of the assignment that follows it. | off |
| ID210 | ProLinebreak After Comma LBA_COMMAUPDATE | Trailing commas in the SET clause: each assignment ends with its comma and the next starts on a new line. | on |
| ID211 | ProLinebreak Before SET LBB_SET_UPDATE | Puts SET on a new line, separating it from the table name. | on |
| ID212 | ProLinebreak After SET LBA_SET_UPDATE | Starts the first assignment on the line after SET, so that all assignments form one block. | on |
ID150 off, ID211 off, ID212 off
update employee set salary = salary * 1.05, bonus = 500 where dept_nbr = 10
ID150 on, ID211 on, ID212 on
update employee set salary = salary * 1.05, bonus = 500 where dept_nbr = 10
DELETE
| ID | Option | What it does | Default |
|---|---|---|---|
| ID151 | FreeLinebreak After DELETE LBA_DELETE | Starts the FROM clause on the line after DELETE. | on |
ID151 off
delete from employee where dept_nbr = 10
ID151 on
delete from employee where dept_nbr = 10
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
MERGE
A MERGE statement combines a target, a source, a join condition and several conditional branches in one command, which makes it one of the longest statements in everyday SQL. These options break it into its constituent clauses – MERGE, USING, ON, WHEN and THEN – so the structure stays visible.
MERGE
MERGE
| ID | Option | What it does | Default |
|---|---|---|---|
| ID213 | ProLinebreak After MERGE LBA_MERGE | Starts the target table on the line after the MERGE keyword. | on |
A complete MERGE with all options on this page at their defaults. The groups below cover each clause in turn.
merge into employee tgt using employee_staging src on (tgt.emp_nbr = src.emp_nbr) when matched then update set tgt.salary = src.salary when not matched then insert (emp_nbr, emp_name) values (src.emp_nbr, src.emp_name)
USING
| ID | Option | What it does | Default |
|---|---|---|---|
| ID214 | ProLinebreak Before USING LBB_MERGE_USING | Puts USING on a new line, which separates the source from the target. | on |
| ID215 | ProLinebreak After USING LBA_MERGE_USING | Starts the source – a table or a complete subquery – on the line after USING. | on |
ID214 off, ID215 off
into employee tgt using employee_staging src
ID214 on, ID215 on
into employee tgt using employee_staging src
ON
| ID | Option | What it does | Default |
|---|---|---|---|
| ID216 | ProLinebreak Before ON LBB_MERGE_ON | Puts ON on a new line, separating the match condition from the source. | on |
| ID217 | ProLinebreak After ON LBA_MERGE_ON | Starts the match condition on the line after ON. | off |
ID216 off
using employee_staging src on (tgt.emp_nbr = src.emp_nbr)
ID216 on
using employee_staging src on (tgt.emp_nbr = src.emp_nbr)
ON Condition
| ID | Option | What it does | Default |
|---|---|---|---|
| ID218 | ProLinebreak Before AND/OR in ON Condition LBB_MERGEON_AND | Starts each additional part of the match condition on its own line, led by AND or OR. | off |
| ID219 | ProLinebreak After AND/OR in ON Condition LBA_MERGEON_AND | Puts the condition on the line after the operator. | off |
| ID220 | ProIndent AND/OR in ON Condition IND_MERGEON_AND | Indents the AND / OR operators of the ON condition one level deeper. | off |
ID218 off
on (tgt.emp_nbr = src.emp_nbr and tgt.region = src.region)
ID218 on, ID220 on
on (tgt.emp_nbr = src.emp_nbr and tgt.region = src.region)
WHEN Condition
| ID | Option | What it does | Default |
|---|---|---|---|
| ID221 | ProLinebreak Before AND/OR in WHEN Condition LBB_MERGEWHEN_AND | Starts each additional part of a WHEN MATCHED AND … condition on its own line. | off |
| ID222 | ProLinebreak After AND/OR in WHEN Condition LBA_MERGEWHEN_AND | Puts the condition on the line after the operator. | off |
| ID223 | ProIndent AND/OR in WHEN Condition IND_MERGEWHEN_AND | Indents the AND / OR operators of the WHEN condition one level deeper. | off |
ID221 off
when matched and src.salary > 0 and src.active = 1 then
ID221 on
when matched and src.salary > 0 and src.active = 1 then
THEN
| ID | Option | What it does | Default |
|---|---|---|---|
| ID224 | ProLinebreak Before THEN LBB_MERGEWHEN_THEN | Puts THEN on a new line, separating the condition of a branch from the action it triggers. | off |
ID224 off
when matched then update set tgt.salary = src.salary
ID224 on
when matched then update set tgt.salary = src.salary
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Comma Separated Lists
The comma-separated list is the most common construct in SQL: the SELECT column list, GROUP BY, ORDER BY, INSERT columns and values. These options decide how many entries share a line, whether the comma sits at the end of a line or leads the next one, and how a leading comma is aligned. Leading commas are a widespread convention because adding or removing the last column then touches only one line.
Comma Separated Lists in SQL Statemets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID065 | FreeNumber of Columns per Line LB_NBR_COMMASPERLINE | How many list entries share one line. 1 gives one column per line – the standard for anything but the shortest lists, because a diff then shows exactly which column changed. 999 keeps the list on as few lines as possible.Choices: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 999 | 1 |
One entry per line is the usual choice for anything but the shortest lists: a diff then shows exactly which column changed.
ID065 = 3
select emp_nbr, emp_name, dept_nbr, hire_date, salary, bonus from employee
ID065 = 1
select emp_nbr, emp_name, dept_nbr, hire_date, salary, bonus from employee
Linebreak After Comma
| ID | Option | What it does | Default |
|---|---|---|---|
| ID013 | FreeLinebreak After Comma LBA_COMMA | Trailing commas: each entry ends with its comma, the next entry starts on a new line. | on |
ID013 off
select emp_nbr, emp_name, dept_nbr from employee
ID013 on
select emp_nbr, emp_name, dept_nbr from employee
Linebreak Before Comma
| ID | Option | What it does | Default |
|---|---|---|---|
| ID012 | FreeLinebreak Before Comma LBB_COMMA | Leading commas: the comma opens the line of the entry that follows it. Adding or removing the last column then touches a single line, which keeps diffs minimal. | on |
| ID122 | FreeMove Comma 2 Positions to the left with 1 Space (When ID01... ALI_MOVE_COMMALEFT | Shifts a leading comma two positions left and puts one space after it, so the entries themselves stay aligned with the block above. Mutually exclusive with ID242, ID181. | off |
| ID242 | FreeMove Comma 1 Positions to the left with no space (When ID0... ALI_MOVE_COMMALEFTONE | Shifts a leading comma one position left with no space after it – the tighter variant of the option above. Mutually exclusive with ID122, ID181. | off |
| ID181 | FreeMove Comma to the left border of the SELECT statement (Whe... ALI_MOVE_COMMALEFTBORDER | Moves the leading comma out to the left margin of the SELECT statement, giving the list a distinct outer edge. Mutually exclusive with ID122, ID242. | off |
Leading commas: adding or removing the last column touches a single line, which keeps diffs minimal.
ID013 on (trailing comma)
select emp_nbr, emp_name, dept_nbr from employee
ID012 on (leading comma)
select emp_nbr , emp_name , dept_nbr from employee
Tip: ID122, ID242 and ID181 are three mutually exclusive ways to position that leading comma: two positions left with a space, one position left with no space, or out at the left margin of the statement. Pick one.
Concat Operator ('||')
| ID | Option | What it does | Default |
|---|---|---|---|
| ID058 | FreeLinebreak Before Concat ('||') LBB_CONCAT | Puts the concatenation operator at the start of the next line, so each fragment of a long concatenation begins with the operator. | off |
| ID059 | FreeLinebreak After Concat ('||') LBA_CONCAT | Starts the next fragment on the line after the operator. | off |
ID058 off, ID059 off
select first_name || ' ' || last_name as full_name from employee
ID058 on
select first_name || ' ' || last_name as full_name from employee
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
My Lists for SQL Functions
Some function calls hold long argument lists that deserve their own layout – a DECODE with twenty branches, an IN list of literals, a COALESCE across many columns. Here you can name up to three groups of function keywords and give each group its own formatting, independent of the general list options.
My List for SQL Functions 1
| ID | Option | What it does | Default |
|---|---|---|---|
| ID194 | FreeMy SQL Function Keywords GROUP 1 MY_FUNCTIONKEYWORDLIST | The function keywords of group 1, one per line. Argument lists inside these functions are formatted with the settings below instead of the general list options. | in |
| ID196 | FreeNumber of Values in 1st Line LB_NBR_COMMASINFUNCTIONLIST_L1 | How many arguments appear on the first line. Setting this higher than the following lines lets you keep the function name and its first arguments together. Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999 | 1 |
| ID197 | FreeNumber of Values in subsequent Lines LB_NBR_COMMASINFUNCTIONLIST | How many arguments appear on each subsequent line. Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999 | 1 |
| ID225 | FreeLinebreak Before ( LBB_FUNCTIONLIST1_OPENBRACKET | Puts the opening bracket of the function call on a new line. | off |
| ID228 | FreeLinebreak After ( LBA_FUNCTIONLIST1_OPENBRACKET | Starts the first argument on the line after the opening bracket. | off |
| ID198 | FreeAlign Commas ALI_COMMA_FUNCTIONLIST | Aligns the commas of the argument list into a column. | off |
| ID231 | FreeIndent Values inside Bracket IND_FUNCTIONLIST1 | Indents the arguments one level deeper than the function name. | off |
ID194 contains decode; ID197 = 2 puts two arguments on each subsequent line, so the branches of the decode pair up.
decode not listed in ID194
select decode(status, 1, 'new', 2, 'open', 3, 'done', 'other') from ticket
decode listed, ID197 = 2
select decode(status, 1, 'new', 2, 'open', 3, 'done', 'other') from ticket
My List for SQL Functions 2
| ID | Option | What it does | Default |
|---|---|---|---|
| ID199 | FreeMy SQL Function Keywords GROUP 2 MY_FUNCTIONKEYWORDLIST2 | The function keywords of group 2, one per line. Use a second group when different functions need different argument layouts. | (empty) |
| ID200 | FreeNumber of Values in 1st Line LB_NBR_COMMASINFUNCTIONLIST2_L1 | How many arguments appear on the first line. Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999 | 1 |
| ID201 | FreeNumber of Values in subsequent Lines LB_NBR_COMMASINFUNCTIONLIST2 | How many arguments appear on each subsequent line. Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999 | 1 |
| ID226 | FreeLinebreak Before ( LBB_FUNCTIONLIST2_OPENBRACKET | Puts the opening bracket on a new line. | off |
| ID229 | FreeLinebreak After ( LBA_FUNCTIONLIST2_OPENBRACKET | Starts the first argument on the line after the opening bracket. | off |
| ID202 | FreeAlign Commas ALI_COMMA_FUNCTIONLIST2 | Aligns the commas of the argument list. | off |
| ID232 | FreeIndent Values inside Bracket IND_FUNCTIONLIST2 | Indents the arguments one level deeper than the function name. | off |
A second, independent group – here in with ID201 = 2 and ID232 on.
in not listed in ID199
where dept_nbr in (10, 20, 30, 40, 50, 60)
in listed, ID201 = 2, ID232 on
where dept_nbr in ( 10, 20, 30, 40, 50, 60 )
My List for SQL Functions 3
| ID | Option | What it does | Default |
|---|---|---|---|
| ID203 | FreeMy SQL Function Keywords GROUP 3 MY_FUNCTIONKEYWORDLIST3 | The function keywords of group 3, one per line. | (empty) |
| ID204 | FreeNumber of Values in 1st Line LB_NBR_COMMASINFUNCTIONLIST3_L1 | How many arguments appear on the first line. Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999 | 1 |
| ID205 | FreeNumber of Values in subsequent Lines LB_NBR_COMMASINFUNCTIONLIST3 | How many arguments appear on each subsequent line. Choices: 1, 2, 3, 4, 5, 6, 7, 8, 10, 20, 100, 999 | 1 |
| ID227 | FreeLinebreak Before ( LBB_FUNCTIONLIST3_OPENBRACKET | Puts the opening bracket on a new line. | off |
| ID230 | FreeLinebreak After ( LBA_FUNCTIONLIST3_OPENBRACKET | Starts the first argument on the line after the opening bracket. | off |
| ID206 | FreeAlign Commas ALI_COMMA_FUNCTIONLIST3 | Aligns the commas of the argument list. | off |
| ID233 | FreeIndent Values inside Bracket IND_FUNCTIONLIST3 | Indents the arguments one level deeper than the function name. | off |
A third group – here coalesce with one argument per line and the commas aligned.
coalesce not listed in ID203
select coalesce(bonus, commission, allowance, 0) from employee
coalesce listed, ID205 = 1
select coalesce(bonus, commission, allowance, 0) from employee
Tip: The three groups are independent and are matched by function name. A function that appears in none of them falls back to the general list options on the Comma Separated Lists page.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Conditions in Brackets
When a WHERE or HAVING clause groups conditions with brackets, the brackets carry the logic: they decide what binds to what. These options make that grouping visible at a glance by placing linebreaks around the brackets and indenting their contents.
Conditions in Brackets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID088 | ProLinebreak Before '(' LBB_CONDITIONBRACKET | Puts the opening bracket of a condition group on a new line. | off |
| ID017 | ProLinebreak After '(' LBA_CONDITIONBRACKET | Starts the first condition on the line after the opening bracket, so the bracket alone marks the beginning of the group. | on |
| ID091 | ProLinebreak Before ')' LBB_CLOSECONDITIONBRACKET | Puts the closing bracket on a new line, where it terminates the group. | off |
| ID092 | ProLinebreak After ')' LBA_CLOSECONDITIONBRACKET | Starts whatever follows the group on the line after the closing bracket. | off |
| ID069 | ProIndent Conditions in Brackets IND_AFT_CONDITIONBR | Indents the conditions inside the brackets one level deeper, so that nesting depth becomes visible as indentation depth. | on |
Brackets carry the logic of a filter – they decide what binds to what. Indenting their contents makes that grouping visible.
ID017 off, ID069 off
where (dept_nbr = 10 or dept_nbr = 20) and active = 1
ID017 on, ID069 on
where ( dept_nbr = 10 or dept_nbr = 20 ) and active = 1
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Analytic Expressions - OVER
Window functions such as ROW_NUMBER() OVER (PARTITION BY … ORDER BY …) pack a whole sub-language into one bracketed expression, frequently inside an already long column list. These options give the OVER clause its own layout so that the partitioning and ordering can be read separately from the function call.
Analytic Expressions - OVER
Brackets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID234 | ProLinebreak Before '(' LBB_OPENANALYTICBRACKET | Puts the opening bracket of the OVER clause on a new line, separating the window definition from the function call. | on |
| ID235 | ProLinebreak After '(' LBA_OPENANALYTICBRACKET | Starts the window definition on the line after the opening bracket. | on |
| ID236 | ProLinebreak Before ')' LBB_CLOSEANALYTICBRACKET | Puts the closing bracket on a new line. | on |
| ID237 | ProLinebreak After ')' LBA_CLOSEANALYTICBRACKET | Starts whatever follows – usually the alias – on the line after the closing bracket. | on |
All four off
select rank() over (partition by dept_nbr order by salary desc) as rnk from employee
ID234 on, ID235 on, ID236 on
select rank() over ( partition by dept_nbr order by salary desc ) as rnk from employee
PARTITION BY / ORDER BY
| ID | Option | What it does | Default |
|---|---|---|---|
| ID240 | ProLinebreak Before PARTITION BY, ORDER BY, LBB_ANALYTICPARTITIONBY | Puts each of PARTITION BY, ORDER BY and the frame clause on its own line, which is what makes a complex window definition readable. | on |
| ID241 | ProStack Attributes LB_STACKANALYTIC | Stacks the columns of a PARTITION BY or ORDER BY one per line. | on |
ID240 off, ID241 off
over (partition by dept_nbr, job order by salary desc, hire_date)
ID240 on, ID241 on
over (partition by dept_nbr, job order by salary desc, hire_date)
Stack & Indenting
| ID | Option | What it does | Default |
|---|---|---|---|
| ID238 | ProIndent Statement Inside Bracket IND_ANALYTICBRACKETINSIDE | Indents the contents of the OVER bracket one level deeper. | on |
| ID239 | ProIndent Brackt IND_ANALYTICBRACKETOUTSIDE | Indents the bracket itself relative to the function call. | on |
ID238 off
over ( partition by dept_nbr order by salary desc )
ID238 on
over ( partition by dept_nbr order by salary desc )
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
CASE
A CASE expression is a decision table written inline, and it benefits more than any other construct from consistent formatting: with each WHEN on its own line, the branches can be compared vertically. These options cover the CASE, WHEN, THEN, ELSE and END keywords, the conditions inside a WHEN, and a threshold that keeps very short CASE expressions on one line.
CASE Keywords
These options place the five keywords that make up a CASE expression. Read them as pairs: Linebreak Before decides whether the keyword starts a new line, Linebreak After whether its operand starts a new line.
CASE / END
| ID | Option | What it does | Default |
|---|---|---|---|
| ID026 | ProLinebreak Before CASE Keyword LBB_CASE | Puts CASE on a new line. In a SELECT list this separates the CASE expression from the column before it. | on |
| ID042 | ProLinebreak After CASE Keyword LBA_CASE | Starts the first WHEN on the line after the CASE keyword. | on |
| ID044 | ProLinebreak Before END Keyword LBB_CASE_END | Puts END on a new line, where it closes the expression at the same indentation as CASE. | on |
| ID121 | ProIndent CASE Statement inside brackets IND_CASEBRACKET | Indents a CASE expression that sits inside brackets, for example within a function call. | off |
ID026 off, ID042 off, ID044 off
select emp_name, case when salary > 5000 then 'high' else 'low' end as band from employee
ID026 on, ID042 on, ID044 on
select emp_name, case when salary > 5000 then 'high' else 'low' end as band from employee
WHEN
| ID | Option | What it does | Default |
|---|---|---|---|
| ID055 | ProLinebreak Before WHEN Keyword LBB_CASE_WHEN | Puts each WHEN on a new line. This is the option that turns a CASE expression into a readable decision table. | on |
| ID043 | ProLinebreak After WHEN Keyword LBA_CASE_WHEN | Starts the condition on the line after the WHEN keyword. | on |
| ID048 | ProIndent WHEN Conditions IND_CASE_WHEN | Indents the WHEN conditions one level deeper than CASE, subordinating the branches to the expression. | on |
This is the option that turns a CASE expression into a readable decision table: one branch per line, comparable top to bottom.
ID055 off
case when salary > 5000 then 'high' when salary > 2000 then 'mid' else 'low' end
ID055 on, ID048 on
case when salary > 5000 then 'high' when salary > 2000 then 'mid' else 'low' end
THEN
| ID | Option | What it does | Default |
|---|---|---|---|
| ID052 | ProLinebreak Before THEN Keyword LBB_CASE_THEN | Puts THEN on a new line, separating each condition from its result. | on |
| ID046 | ProLinebreak After THEN Keyword LBA_CASE_THEN | Starts the result value on the line after THEN. | off |
| ID085 | ProIndent THEN Keyword IND_CASE_THEN | Indents THEN one level deeper than its WHEN. | off |
ID052 off
case when salary > 5000 then 'high' when salary > 2000 then 'mid' end
ID052 on
case when salary > 5000 then 'high' when salary > 2000 then 'mid' end
Tip: Add ID085 to indent the THEN line one level below its WHEN, which keeps the condition and its result visually paired.
ELSE
| ID | Option | What it does | Default |
|---|---|---|---|
| ID053 | ProLinebreak Before ELSE Keyword LBB_CASE_ELSE | Puts ELSE on a new line, aligned with the WHEN branches. | on |
| ID047 | ProLinebreak After ELSE Keyword LBA_CASE_ELSE | Starts the default value on the line after ELSE. | off |
| ID086 | ProIndent ELSE Keyword IND_CASE_ELSE | Indents ELSE one level deeper. | off |
ID053 off
case when salary > 5000 then 'high' else 'low' end
ID053 on
case when salary > 5000 then 'high' else 'low' end
CASE Conditions
Applies to the boolean expression inside a WHEN, not to the CASE expression as a whole.
Brackets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID117 | ProLinebreak Before '(' LBB_OPENCASEBRACKET | Puts the opening bracket of a WHEN condition on a new line. | off |
| ID118 | ProLinebreak After '(' LBA_OPENCASEBRACKET | Starts the condition on the line after the opening bracket. | on |
| ID119 | ProLinebreak Before ')' LBB_CLOSECASEBRACKET | Puts the closing bracket on a new line. | off |
| ID120 | ProLinebreak After ')' LBA_CLOSECASEBRACKET | Starts whatever follows on the line after the closing bracket. | off |
ID118 off
when (salary > 5000 and job = 'MGR') then 'senior'
ID118 on
when ( salary > 5000 and job = 'MGR' ) then 'senior'
AND/OR
| ID | Option | What it does | Default |
|---|---|---|---|
| ID056 | ProLinebreak Before AND/OR LBB_CASE_ANDOR | Starts each additional part of a WHEN condition on its own line, led by AND or OR. | on |
| ID061 | ProLinebreak After AND/OR LBA_CASE_ANDOR | Puts the condition on the line after the operator. | off |
| ID254 | ProIndent AND/OR in CASE Condition IND_CASE_ANDOR | Indents the AND / OR operators inside a WHEN condition one level deeper. | off |
ID056 off
when salary > 5000 and job = 'MGR' and active = 1 then 'senior'
ID056 on
when salary > 5000 and job = 'MGR' and active = 1 then 'senior'
Small CASE Statements
| ID | Option | What it does | Default |
|---|---|---|---|
| ID067 | ProNo Linebreak for CASE Statement smaller than this number o... LB_WIDTH_SMALL_CASE | CASE expressions of up to and including this many characters are kept on one line. Prevents a two-branch flag conversion from occupying six lines. Set to 0 to always break. | 10 |
Keeps a two-branch flag conversion from occupying six lines.
ID067 = 0
select case when flag = 1 then 'Y' else 'N' end as active from employee
ID067 = 40
select case when flag = 1 then 'Y' else 'N' end as active from employee
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
ANSI DDL
Formatting for CREATE TABLE and related DDL. A table definition is read far more often than it is written – it is the reference for everyone working with the table – so a stable, column-per-line layout with aligned data types pays off over the lifetime of the schema.
ANSI DDL
Linebreak Before Comma
| ID | Option | What it does | Default |
|---|---|---|---|
| ID249 | ProLinebreak Before Comma LBB_COMMA_DDL | Leading commas in a column definition list: the comma opens the line of the column that follows. Mutually exclusive with ID250. | off |
ID249 off (trailing comma)
create table dept ( dept_nbr integer not null, dept_name varchar(60), dept_zip char(5) )
ID249 on (leading comma)
create table dept ( dept_nbr integer not null , dept_name varchar(60) , dept_zip char(5) )
Linebreak After Comma
| ID | Option | What it does | Default |
|---|---|---|---|
| ID250 | ProLinebreak After Comma LBA_COMMA_DDL | Trailing commas in a column definition list. Mutually exclusive with ID249. | on |
| ID251 | ProMove Comma 2 Positions to the left with 1 Space (When ID24... ALI_MOVE_COMMALEFT_DDL | Shifts a leading comma two positions left and puts one space after it. Mutually exclusive with ID252. | off |
| ID252 | ProMove Comma 1 Position to the left with no Space (When ID24... ALI_MOVE_COMMALEFTONE_DDL | Shifts a leading comma one position left with no space after it. Mutually exclusive with ID251. | off |
ID250 off
create table dept ( dept_nbr integer, dept_name varchar(60), dept_zip char(5) )
ID250 on
create table dept ( dept_nbr integer, dept_name varchar(60), dept_zip char(5) )
Brackets
| ID | Option | What it does | Default |
|---|---|---|---|
| ID188 | ProLinebreak Before '(' LBB_OPENCREATEBRACKET | Puts the opening bracket of the column definition list on a new line. | on |
| ID189 | ProLinebreak After '(' LBA_OPENCREATEBRACKET | Starts the first column definition on the line after the opening bracket. | on |
| ID190 | ProLinebreak Before ')' LBB_CLOSECREATEBRACKET | Puts the closing bracket on a new line. | on |
| ID191 | ProLinebreak After ')' LBA_CLOSECREATEBRACKET | Starts whatever follows – storage clauses, tablespace options – on the line after the closing bracket. | on |
All four off
create table dept (dept_nbr integer, dept_name varchar(60))
All four on
create table dept ( dept_nbr integer, dept_name varchar(60) )
Indenting
| ID | Option | What it does | Default |
|---|---|---|---|
| ID192 | ProIndent Cols in Bracket IND_CREATEBRACKETINSIDE | Indents the column definitions one level deeper than CREATE TABLE. | on |
| ID193 | ProIndent Bracket IND_CREATEBRACKETOUTSIDE | Indents the bracket itself relative to the CREATE keyword. | on |
ID192 off
create table dept ( dept_nbr integer, dept_name varchar(60) )
ID192 on
create table dept ( dept_nbr integer, dept_name varchar(60) )
Tip: A table definition is read far more often than it is written – it is the reference for everyone working with the table. A stable column-per-line layout pays off over the lifetime of the schema.
My CREATE Keywords
| ID | Option | What it does | Default |
|---|---|---|---|
| ID195 | ProMy CREATE Keywords getting Linebreaks before and after MY_CREATEKEYWORDLIST | Your own DDL keywords, one per line. Each gets a linebreak before and after, which lets you give dialect-specific storage or partitioning clauses their own line. | MyDDLKeyword1 |
With ID195 containing tablespace and partition by, each listed keyword gets a linebreak before and after it.
create table sales ( sale_id integer, sale_date date ) tablespace ts_sales partition by range (sale_date)
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Procedure & Function Parameters
The parameter list in the header of a stored procedure or function is its public interface. These options place the brackets and the commas of that list, so that every parameter with its mode and data type occupies its own line.
Proceddure / Function Parameters
Linebreaks
| ID | Option | What it does | Default |
|---|---|---|---|
| ID078 | ProLinebreak Before Comma SP_LBB_COMMA | Leading commas in the parameter list: the comma opens the line of the parameter that follows. | on |
| ID079 | ProLinebreak After Comma SP_LBA_COMMA | Trailing commas in the parameter list. | on |
| ID100 | ProLinebreak Before '(' SP_LBB_OPENPARMBRACKET | Puts the opening bracket of the parameter list on a new line, separating it from the procedure name. | on |
| ID101 | ProLinebreak After '(' SP_LBA_OPENPARMBRACKET | Starts the first parameter on the line after the opening bracket. | on |
| ID102 | ProIndent Parameter in Brackets SP_IND_PARMBRACKET | Indents the parameters one level deeper than the procedure name. | on |
| ID103 | ProLinebreak Before ')' SP_LBB_CLOSEPARMBRACKET | Puts the closing bracket on a new line, where it terminates the signature. | on |
| ID104 | ProLinebreak After ')' SP_LBA_CLOSEPARMBRACKET | Starts whatever follows – RETURNS, AS, IS – on the line after the closing bracket. | on |
| ID245 | ProMove Comma 2 Positions to the left with 1 Space (When ID10... SP_ALI_MOVE_COMMALEFT_PARM | Shifts a leading comma two positions left and puts one space after it. | off |
| ID246 | ProMove Comma 1 Position to the left with no Space (When ID10... SP_ALI_MOVE_COMMALEFTONE_PARM | Shifts a leading comma one position left with no space after it. | off |
The parameter list is the public interface of the procedure. One parameter per line, with mode and data type aligned, makes it readable as a signature.
All off
create procedure raise_salary (p_emp_nbr in integer, p_pct in number, p_result out varchar2) as
ID100, ID101, ID102, ID103, ID104 on
create procedure raise_salary ( p_emp_nbr in integer, p_pct in number, p_result out varchar2 ) as
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
IF THEN ELSE & Conditions
Procedural code inside a stored procedure follows different rules from a SELECT statement. These options format IF / THEN / ELSE blocks, the BEGIN…END blocks nested within them, and the boolean conditions those blocks test.
IF THEN ELSE
IF
| ID | Option | What it does | Default |
|---|---|---|---|
| ID037 | ProLinebreak After IF LBA_IF | Starts the condition on the line after the IF keyword. Off by default, because a short condition reads well next to its IF. | off |
ID037 off
if v_salary > 5000 then
ID037 on
if v_salary > 5000 then
THEN
| ID | Option | What it does | Default |
|---|---|---|---|
| ID038 | ProLinebreak Before THEN LBB_IF_THEN | Puts THEN on a new line, so it terminates the condition rather than trailing it. | on |
| ID039 | ProLinebreak After THEN LBA_IF_THEN | Starts the block body on the line after THEN. | on |
ID038 off, ID039 off
if v_salary > 5000 then v_band := 'high';
ID038 on, ID039 on
if v_salary > 5000 then v_band := 'high';
ELSE
| ID | Option | What it does | Default |
|---|---|---|---|
| ID041 | ProLinebreak After ELSE LBA_IF_ELSE | Starts the block body on the line after ELSE. | on |
| ID024 | ProIndent THEN IND_IF_THEN | Indents the statements of the THEN branch one level deeper than the IF. | off |
| ID025 | ProIndent ELSE IND_IF_ELSE | Indents the statements of the ELSE branch one level deeper. | off |
| ID030 | ProIndent BEGIN IND_BEGIN_END | Indents the contents of a BEGIN…END block one level deeper. Applies to blocks in IF, ELSE, WHILE, LOOP and similar constructs, and is what makes the nesting of procedural code visible. | off |
ID024 and ID025 are what make the nesting of procedural code visible.
ID024 off, ID025 off
if v_salary > 5000 then v_band := 'high'; else v_band := 'low'; end if;
ID024 on, ID025 on
if v_salary > 5000 then v_band := 'high'; else v_band := 'low'; end if;
Tip: ID030 does the same for BEGIN…END blocks nested inside IF, ELSE, WHILE and LOOP constructs.
Conditions
| ID | Option | What it does | Default |
|---|---|---|---|
| ID014 | ProLinebreak Before AND/OR LBB_AND | Starts each condition on its own line, led by AND or OR. | on |
| ID015 | ProLinebreak After AND/OR LBA_AND | Puts the condition on the line after the operator. | on |
ID014 off
if v_salary > 5000 and v_job = 'MGR' and v_active = 1 then
ID014 on
if v_salary > 5000 and v_job = 'MGR' and v_active = 1 then
Conditions
| ID | Option | What it does | Default |
|---|---|---|---|
| ID093 | ProLinebreak Before '(' SP_LBB_OPENCONDITIONBR | Puts the opening bracket of a condition group on a new line. | on |
| ID094 | ProLinebreak After '(' SP_LBA_OPENCONDITIONBR | Starts the first condition on the line after the opening bracket. | on |
| ID097 | ProIndent Conditions in Brackets SP_IND_CONDITIONBR | Indents the conditions inside the brackets one level deeper. | on |
| ID098 | ProLinebreak Before ')' SP_LBB_CLOSECONDITIONBR | Puts the closing bracket on a new line. | on |
| ID099 | ProLinebreak After ')' SP_LBA_CLOSECONDITIONBR | Starts whatever follows on the line after the closing bracket. | on |
| ID139 | ProAlign Comparison Operators (=,<>,>,<,>=,<=) in Conditions SP_ALI_EQUAL | Aligns the comparison operators inside conditions into a column, so the compared values form a readable right-hand column. | on |
ID139 additionally aligns the comparison operators, so the tested values form a readable right-hand column.
ID094 off, ID097 off, ID139 off
if (v_salary > 5000 and v_job = 'MGR' and v_dept = 10) then
ID094 on, ID097 on, ID139 on
if ( v_salary > 5000 and v_job = 'MGR' and v_dept = 10 ) then
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Stored Procedure Variables
Three alignment options for the variable declarations and assignments in procedural code. A declaration block with aligned data types reads like a table, which makes an omitted or mistyped declaration easy to spot.
Stored Procedure Variables
Variables
| ID | Option | What it does | Default |
|---|---|---|---|
| ID051 | ProAlign Variable Declarations ALI_DECLARATION | Aligns the data types of variable declarations into a column. A declaration block then reads like a table, and an omitted type is obvious. | on |
| ID137 | ProAlign Variable Association Operatorts (=>) ALI_ASSOCIATIONOPERATOR | Aligns the named-parameter operator in procedure calls, so that parameter names and their values form two columns. | on |
| ID140 | ProAlign Variable Assignment Operators (:=, =:, *=, =*) SP_ALI_ASSIGNMENT | Aligns assignment operators, so that the assigned expressions start at a common column. | on |
An aligned declaration block reads like a table – an omitted or mistyped declaration is then obvious.
ID051 off, ID140 off
declare v_emp_nbr integer; v_employee_name varchar2(60); v_salary number(9,2); begin v_salary := 0; v_employee_name := 'unknown';
ID051 on, ID140 on
declare v_emp_nbr integer; v_employee_name varchar2(60); v_salary number(9,2); begin v_salary := 0; v_employee_name := 'unknown';
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Stored Procedure Statements
Comma placement for lists that appear in procedural statements – the argument list of a procedure call, an INTO target list, and similar constructs outside a regular SELECT.
Stored Procedure Statements
Statements
| ID | Option | What it does | Default |
|---|---|---|---|
| ID243 | ProLinebreak Before Comma in Statement SP_LBB_COMMA_STATEMENT | Leading commas in the lists of procedural statements, such as a procedure call's argument list. | off |
| ID244 | ProLinebreak After Comma in Statement SP_LBA_COMMA_STATEMENT | Trailing commas in the lists of procedural statements. | on |
| ID247 | ProMove Comma 2 Positions to the left with 1 Space (When ID24... SP_ALI_MOVE_COMMALEFT_STMT | Shifts a leading comma two positions left and puts one space after it. | off |
| ID248 | ProMove Comma 1 Position to the left with no Space (When ID24... SP_ALI_MOVE_COMMALEFTONE_STMT | Shifts a leading comma one position left with no space after it. | off |
A SQL Server EXEC call: the parameters follow the procedure name directly, without brackets, which is exactly the kind of list these options govern.
ID244 on (trailing comma)
exec dbo.usp_update_employee @emp_nbr = 4711, @emp_name = 'Smith', @dept_nbr = 10, @salary = 5200.00, @hire_date = '2026-01-15';
ID243 on (leading comma)
exec dbo.usp_update_employee @emp_nbr = 4711 , @emp_name = 'Smith' , @dept_nbr = 10 , @salary = 5200.00 , @hire_date = '2026-01-15';
Tip: These options apply to lists in procedural statements only – an EXEC or CALL argument list, an INTO target list. The parameter list in a procedure header is on the Procedure & Function Parameters page, and lists inside a regular SELECT are on the Comma Separated Lists page.
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.
Extract & Generate SQL
SQLinForm can work on SQL that is embedded in application source code: it extracts the statement from the surrounding string concatenation, formats it, and writes it back wrapped in the syntax of your programming language. These options define the string delimiter to look for and the code template to emit.
Extract SQL from Code
Used by the Extract SQL from Source Code command: SQLinForm strips the surrounding programming-language syntax, formats the SQL it finds, and can then re-wrap it using the settings below.
| ID | Option | What it does | Default |
|---|---|---|---|
| ID021 | FreeSQL Enclosing Character SRCE_IS_ENCLOSED_CHAR | The character that encloses the SQL string in your source code – a double quote in most languages. SQLinForm uses it to find where the embedded statement begins and ends. | '' |
ID021 tells SQLinForm which character encloses the SQL string in your source code.
Source code (ID021 = ")
sql.append("select dept_nbr, dept_name ");
sql.append("from dept where dept_zip = '64521'");Extracted and formatted
select dept_nbr, dept_name from dept where dept_zip = '64521'
Generate SQL Code
Pre-Defined Programming Language
| ID | Option | What it does | Default |
|---|---|---|---|
| ID001 | FreeSpecify the Programming Language in which you want to incl... OUTPUT_LANGUAGE | The programming language of the generated output. SQLinForm wraps the formatted SQL in that language's string syntax, ready to paste back into your code. Pick My Output Format to define your own template below.Choices: SQL, My Output Format, ASP StringBuilder, C# StringBuilder(1), C# StringBuilder(2), Concatenated SQL(1), Concatenated SQL(2), Java StringBuffer(1), Java StringBuilder(1), Java String(1) ... (23 in total) | SQL |
| ID054 | FreeSpecidy the Variable Name which should be used in the abov... MY_VARIABLENAME | The variable name used in the generated code. | SQL |
ID001 = SQL
select dept_nbr, dept_name from dept
ID001 = C# StringBuilder(1), ID054 = sql
StringBuilder sql = new StringBuilder(); sql.Append("select dept_nbr, "); sql.Append(" dept_name "); sql.Append("from dept ");
My Output Format - Settings
| ID | Option | What it does | Default |
|---|---|---|---|
| ID161 | FreeSpecify the first line of your code preceding the actual S... FIRSTLINEPREFIX | The first line emitted before the SQL – typically a variable declaration. | StringBuilder sql = new StringBu... |
| ID163 | FreeSpecify the code envelopping your SQL on the left side BODYLINEPREFIX | The text placed to the left of every SQL line. | sql.append('' |
| ID164 | FreeSpecify the code envelopping your SQL on the right side BODYLINESUFFIX | The text placed to the right of every SQL line. | ''); |
| ID166 | FreeSpecify the code envelopping your SQL on the right side fo... LASTLINESUFFIX | The text placed to the right of the last SQL line, where a statement is usually terminated differently from the lines before it. | ''); |
| ID167 | FreeLinebreak Before Last Line Suffix (ID166) LBB_LASTLINESUFFIX | Puts the last-line suffix on a line of its own. | off |
The four template fields and the code they produce. Used when ID001 is set to "My Output Format".
-- ID161 first line prefix : StringBuilder sql = new StringBuilder(); -- ID163 body line prefix : sql.append(" -- ID164 body line suffix : "); -- ID166 last line suffix : ").toString(); StringBuilder sql = new StringBuilder(); sql.append("select dept_nbr, "); sql.append(" dept_name "); sql.append("from dept ").toString();
Option IDs are identical across all SQLinForm editions (VS Code, JetBrains, SSMS, Notepad++, Online Formatter) and are the keys stored inside a profile file. Generated from properties.json 2026.8.21.0.