Parameter header
The header is the first significant token. Only comments may precede it, and a second header is an error. It declares every argument.
--(id!, name, page)--
select {{id}}, {{name}}, {{page}}
A name is a bare identifier. blob marks a JSON array of objects used as an optional_groups_* source. The bind type is taken from the JSON value: bool, integer, float, or string.
! means the caller must supply a value. Explicit null stays absent.
A name is one shape in the whole string, including after --sql--. {{id}} is one value. {{id}}... is a list. The same name cannot be both.
Omitted and null are absent. 0, "", and false are present. [] is absent for {{name}}... and for a blob. Inside optional(...), an absent list drops the block. Outside it, [] is an error. A required name that is absent is an error, so id! does not elide inside optional(...).