CASE
Translation reference to convert Teradata CASE statement to Snowflake Scripting
Description
Provides conditional execution of statements based on the evaluation of the specified conditional expression or equality of two operands.
The CASE statement is different from the SQL CASE expression, which returns the result of an expression.
For more information regarding Teradata CASE, check here.
-- Simple CASE
CASE operant_1
[ WHEN operant_2 THEN
statement
[ statement ]... ]...
[ ELSE
statement
[ statement ]... ]
END CASE;
-- Searched CASE
CASE
[ WHEN conditional_expression THEN
statement
[ statement ]... ]...
[ ELSE
statement
[ statement ]... ]
END CASE;
Sample Source Patterns
Sample auxiliar table
CREATE TABLE case_table(col varchar(30));
Simple Case
Teradata
CREATE PROCEDURE caseExample1 ( grade NUMBER )
BEGIN
CASE grade
WHEN 10 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Excellent');
WHEN 9 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Very Good');
WHEN 8 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Good');
WHEN 7 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Fair');
WHEN 6 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Poor');
ELSE INSERT INTO CASE_TABLE(COL) VALUES ('No such grade');
END CASE;
END;
CALL caseExample1(6);
CALL caseExample1(4);
CALL caseExample1(10);
SELECT * FROM CASE_TABLE;
Snowflake Scripting
CREATE OR REPLACE PROCEDURE PUBLIC.caseExample1 (GRADE FLOAT )
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
BEGIN
CASE ( grade)
WHEN 10 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Excellent');
WHEN 9 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Very Good');
WHEN 8 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Good');
WHEN 7 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Fair');
WHEN 6 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Poor');
ELSE
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('No such grade');
END CASE;
END;
$$;
CALL caseExample1(6);
CALL caseExample1(4);
CALL caseExample1(10);
SELECT* FROM PUBLIC.CASE_TABLE;
Searched Case
Teradata
CREATE PROCEDURE caseExample2 ( grade NUMBER )
BEGIN
CASE
WHEN grade = 10 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Excellent');
WHEN grade = 9 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Very Good');
WHEN grade = 8 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Good');
WHEN grade = 7 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Fair');
WHEN grade = 6 THEN INSERT INTO CASE_TABLE(COL) VALUES ('Poor');
ELSE INSERT INTO CASE_TABLE(COL) VALUES ('No such grade');
END CASE;
END;
CALL caseExample2(6);
CALL caseExample2(4);
CALL caseExample2(10);
SELECT * FROM CASE_TABLE;
Snowflake Scripting
CREATE OR REPLACE PROCEDURE PUBLIC.caseExample2 (GRADE FLOAT )
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
BEGIN
CASE
WHEN grade = 10 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Excellent');
WHEN grade = 9 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Very Good');
WHEN grade = 8 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Good');
WHEN grade = 7 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Fair');
WHEN grade = 6 THEN
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('Poor');
ELSE
INSERT INTO PUBLIC.CASE_TABLE (COL) VALUES ('No such grade');
END CASE;
END;
$$;
CALL caseExample2(6);
CALL caseExample2(4);
CALL caseExample2(10);
SELECT * FROM PUBLIC.CASE_TABLE;
Known Issues
No issues were found.
Related EWIs
No related EWIs.
Last updated
Was this helpful?