Section to declare all the procedure variables except for loop variables.
Redshift supports multiple DECLARE sections per block statement, since Snowflake does not support this behavior they must be merged into a single declaration statement per block.
Grammar Syntax
[ DECLARE declarations ]
Sample Source Patterns
Input Code:
IN -> Redshift_01.sql
CREATE OR REPLACE PROCEDURE first_procedure (first_parameter integer)
LANGUAGE plpgsql
AS
$$
DECLARE
i int := first_parameter;
BEGIN
select i;
END;
$$;
CREATE OR REPLACE PROCEDURE second_procedure (first_parameter integer)
LANGUAGE plpgsql
AS
$$
DECLARE
i int := first_parameter;
DECLARE
j int := first_parameter;
BEGIN
select i;
END;
$$;
Output Code:
OUT -> Redshift_01.sql
CREATE OR REPLACE PROCEDURE first_procedure (first_parameter integer)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/11/2025", "domain": "test" }}'
AS
$$
DECLARE
i int := first_parameter;
BEGIN
select i;
END;
$$;
CREATE OR REPLACE PROCEDURE second_procedure (first_parameter integer)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/11/2025", "domain": "test" }}'
AS
$$
DECLARE
i int := first_parameter;
j int := first_parameter;
BEGIN
select i;
END;
$$;