{#- Snowflake: capture output parameters via an anonymous block.
    Declares LET variables, calls the proc with :varName references,
    then SELECTs the output values as a regular result set.
    Each variable is aliased so the result set columns have stable names. -#}
BEGIN
{{ pre_execute }}
{{ run }};
LET res RESULTSET := (SELECT {% for out in outputs %}:{{ out }} AS "{{ out | upper }}"{% if not loop.last %}, {% endif %}{% endfor %});
RETURN TABLE(res);
END;
