DevTools Logo
All posts

How to Format Stored Procedures: T-SQL, PL/SQL, and PL/pgSQL

August 15, 2026 · DevTools

sql
stored-procedure
tsql
plsql
postgresql
database

Stored procedures and functions are harder to read than plain queries: nested BEGIN/END blocks, parameter lists, cursors, and exception handlers stack up fast. When you copy a procedure out of SSMS, SQL Developer, or pgAdmin, you often get inconsistent indentation or a single compressed line.

The Stored Procedure Formatter rewrites that source with readable line breaks and consistent keyword casing — entirely in your browser.

Supported dialects

EngineTypical syntaxFormatter dialect
SQL ServerCREATE PROCEDURE … AS BEGIN … ENDT-SQL
OracleCREATE OR REPLACE PROCEDURE … IS … END;PL/SQL
PostgreSQLCREATE FUNCTION … LANGUAGE plpgsql AS $$ … $$PL/pgSQL

Select the matching dialect before pasting. The parser applies engine-specific rules from the sql-formatter library.

Before and after (T-SQL)

Input (minified):

CREATE PROCEDURE dbo.GetActiveUsers @MinAge INT AS BEGIN SELECT u.Id, u.Name FROM dbo.Users u WHERE u.Age >= @MinAge AND u.IsActive = 1; END

Output (formatted, excerpt):

CREATE PROCEDURE dbo.GetActiveUsers @MinAge INT
AS
BEGIN
  SELECT
    u.Id,
    u.Name
  FROM
    dbo.Users u
  WHERE
    u.Age >= @MinAge
    AND u.IsActive = 1;
END

Options that matter

  • Keyword casing — UPPERCASE keywords match many DBA style guides; preserve casing if your team already standardized mixed case.
  • Indent width — 2 spaces is common in application repos; 4 spaces appears in legacy DBA scripts.
  • Privacy — nothing is uploaded; formatting runs locally like every DevTools utility.

When to use the SQL Formatter instead

Use the general SQL Formatter for SELECT/INSERT/UPDATE queries, migrations with many dialects (MySQL, SQLite, BigQuery), or minify/compare workflows. Use the stored procedure formatter when the source is a CREATE PROCEDURE or CREATE FUNCTION body.

Limitations

  • Incomplete snippets (missing END, wrong dialect) may fail to parse — paste the full CREATE statement when possible.
  • Exotic vendor extensions beyond standard procedure syntax may need manual touch-up after formatting.

Try your procedure in the Stored Procedure Formatter — no sign-up, no upload.