When the CONTINUE conditions are true, the loop can continue the execution, when is false stop the loop. ().
CONTINUE are partial supported by .
Grammar Syntax
CONTINUE [ label ] [ WHEN expression ];
Sample Source Patterns
Input Code:
IN -> Redshift_01.sql
CREATE OR REPLACE PROCEDURE procedure1 (x INT)
LANGUAGE plpgsql
AS $$
DECLARE
i INTEGER := 0;
BEGIN
<<simple_loop_when>>
LOOP
i := i + 1;
CONTINUE WHEN i = 5;
RAISE INFO 'i %', i;
EXIT simple_loop_when WHEN (i >= x);
END LOOP;
END;
$$;
CREATE OR REPLACE PROCEDURE procedure11 (x INT)
LANGUAGE plpgsql
AS $$
DECLARE
i INTEGER := 0;
BEGIN
LOOP
i := i + 1;
IF (I = 5) THEN
CONTINUE;
END IF;
RAISE INFO 'i %', i;
EXIT WHEN (i >= x);
END LOOP;
END;
$$;
Console Output
1
2
3
4
6
7
Output Code:
OUT -> Redshift_01.sql
CREATE OR REPLACE PROCEDURE procedure1 (x INT)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/17/2025", "domain": "test" }}'
AS $$
DECLARE
i INTEGER := 0;
BEGIN
!!!RESOLVE EWI!!! /*** SSC-EWI-0094 - LABEL DECLARATION FOR A STATEMENT IS NOT SUPPORTED BY SNOWFLAKE SCRIPTING <<simple_loop_when>> ***/!!!
LOOP
i := i + 1;
IF (i = 5) THEN
CONTINUE;
END IF;
CALL RAISE_MESSAGE_UDF('INFO', 'i %', array_construct(:i));
IF ((i >= x)) THEN
EXIT simple_loop_when;
END IF;
END LOOP;
END;
$$;
CREATE OR REPLACE PROCEDURE procedure11 (x INT)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/17/2025", "domain": "test" }}'
AS $$
DECLARE
i INTEGER := 0;
BEGIN
LOOP
i := i + 1;
IF (I = 5) THEN
CONTINUE;
END IF;
CALL RAISE_MESSAGE_UDF('INFO', 'i %', array_construct(:i));
IF ((i >= x)) THEN
EXIT;
END IF;
END LOOP;
END;
$$;