Neatbo.

Preview bound SQL parameters

Expand typed T-SQL parameter values for diagnosis and audit every binding.

Browser-local processingInputT-SQL + typed JSONOutputSQL + report + 2 originalsUp to 0.25 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

.sql · .txt

Up to 0.25 MiB per file · File limit: 1

    0 characters · 0 bytes
    Options

    Complete the required options first. You can keep the defaults for the rest.

    Choose exact matching or explicit ASCII case folding; database collation is unknown.

    Preparing the tool…

    Before you start

    Keep the original T-SQL command and typed parameter JSON, then read a complete diagnostic preview and matching report. SQL drivers send the command and parameters separately.

    How to use this tool

    1. Paste the original command or select one local UTF-8 .sql file.
    2. Paste the complete typed parameter JSON and choose the explicit name matching rule.
    3. Run the preview; inspect repeated occurrences, missing-name errors and unused bindings.
    4. Copy the complete diagnostic or save all four artifacts, then keep the originals with the real application log.

    Supported inputs and limits

    Paste a command or select at most one strict UTF-8 file, up to 256 KiB. A selected file replaces only the command box; keep the secondary typed JSON, up to 1 MiB. Original filename labels allow 512 UTF-8 bytes, independent of operating-system basename limits.

    Use a root object with a parameters array. Each entry has exactly name, type and value. Supported types are scalar Unicode string, signed 32-bit int as a JSON integer token, decimal as an exact canonical decimal string with precision and scale at most 38, strict JSON boolean and null. Unknown types or metadata are refused.

    At most 1,000 unique bindings, 128 UTF-16 units per name including @, and 65,536 UTF-8 bytes per string value. Names must be complete mature LOCAL_ID tokens, without @@. Exact matching is default; optional case folding affects ASCII A–Z only.

    Only complete code-region parameter tokens are expanded. Quoted strings, quoted/bracketed identifiers, line comments and valid nested block comments stay unchanged; @@ system references stay unchanged and are reported. Unfinished tokens, missing bindings and duplicate decoded metadata/names refuse the whole operation.

    Allow 100,000 mature lexer tokens and 20,000 total parameter/system references. Complete diagnostic SQL allows 8 MiB and the complete report 4 MiB; no sampled or truncated result is returned. A pathological input can hit the 10-second disposable Worker deadline before reaching a numeric limit.

    One leading BOM per input is removed for parsing, recorded and retained in unchanged originals. Reject malformed UTF-8 and unpaired Unicode surrogates. The screen previews 4,000 codepoints; copy and downloads keep every result byte.

    The report preserves all typed values, literals, every occurrence span, system references, unused bindings, source names/SHA256/byte sizes and matching mode. There is no connection, statement validation, declaration scope analysis, database collation inference, driver size/precision coercion or execution. The diagnostic must not replace parameterized execution.

    The four downloads have a separate 16 MiB cap. Downloads plus the complete copy text have a 32 MiB aggregate cap; the full text is counted again even though it also appears in the SQL download. The data panel contains only bounded counts; the complete matching report stays in its JSON download.

    The same absolute 10-second deadline covers validation, reading, callbacks, Worker loading and final result publication. Blocking synchronous work cannot extend it; input is retained for retry.

    Worked example

    Example input

    SELECT subcatId FROM EnrollmentSubCategory WHERE catid = @catId
    Example options
    {"parameters":[{"name":"@catId","type":"int","value":1}]}

    Example output

    -- Neatbo diagnostic preview: parameters are sent separately by SQL drivers; do not execute this preview.
    SELECT subcatId FROM EnrollmentSubCategory WHERE catid = 1

    When something does not work

    Correct every missing binding, duplicated name, type, encoding or unfinished token and rerun. Cancellation and the 10-second deadline discard unfinished output; retry with the same selected File and parameter values.

    Frequently asked questions

    Is this the executed SQL?

    No. It is a diagnostic rendering. Driver parameters travel separately and can undergo declared-size/type conversion; keep parameterized execution and use the actual application/server log when needed.

    Why is a supplied binding unused?

    The name can appear only inside a string, identifier or comment, or its case can differ under exact matching. Every actual code-region occurrence is included in the report.

    Documentation & further reading

    Related tools