EXCEPTION HANDLERS

Translation reference to convert Teradata EXCEPTION HANDLERS clause to Snowflake Scripting

Description

Teradata's single and multiple Exception Handlers are replaced by its equivalent handlers in Snowflake Scripting.

For more information regarding Teradata EXCEPTION HANDLERS, check here.

DECLARE < handler_type > HANDLER
  FOR  < condition_value_list > < handler_action > ;

Sample Source Patterns

SQLEXCEPTION HANDLER

Teradata

CREATE PROCEDURE handlerSample ()
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
        INSERT INTO Proc_Error_Table ('procSample', 'Failed SqlException');
    SELECT * FROM Proc_Error_Table;
END;

Snowflake Scripting

CREATE OR REPLACE PROCEDURE PUBLIC.handlerSample ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
   BEGIN
      SELECT * FROM PUBLIC.Proc_Error_Table;
   EXCEPTION
      WHEN other THEN
         INSERT INTO PUBLIC.Proc_Error_Table VALUES ('procSample', 'Failed SqlException');
   END;
$$;

User-Defined Handlers

Teradata

CREATE PROCEDURE handlerSample ()
BEGIN
    DECLARE EXIT HANDLER FOR Custom1, Custom2, Custom3
      BEGIN
        SET Message1 = 'custom1 and custom2 and custom3';
      END;
    SELECT * FROM Proc_Error_Table;
END;

Snowflake Scripting

CREATE OR REPLACE PROCEDURE PUBLIC.handlerSample ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
   BEGIN
      SELECT * FROM PUBLIC.Proc_Error_Table;
   EXCEPTION
      WHEN Custom1 OR Custom2 OR Custom3 THEN
         BEGIN Message1 := 'custom1 and custom2 and custom3';
      END;
   END;
$$;

Known Issues

CONTINUE Handler

A 'CONTINUE' handler in Teradata allows the execution to be resumed after executing a statement with errors. This is not supported by the exception blocks in Snowflake Scripting. Condition Handler Teradata reference documentation.

Teradata

CREATE PROCEDURE handlerSample ()
BEGIN
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
        INSERT INTO Proc_Error_Table ('spSample4', 'Failed SqlException');
    SELECT * FROM Proc_Error_Table;
END;

Snowflake Scripting

CREATE OR REPLACE PROCEDURE PUBLIC.handlerSample ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
   BEGIN
      /*** MSC-ERROR - MSCEWI1058 - FUNCTIONALITY FOR 'CONTINUE MODE HANDLER' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/
      /*    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION INSERT INTO PUBLIC.Proc_Error_Table VALUES ('spSample4', 'Failed SqlException');*/
      SELECT * FROM PUBLIC.Proc_Error_Table;
   END;
$$;

Other not supported handlers

Handlers for SQLSTATE, SQLWARNING, and NOT FOUND are not supported

Teradata

CREATE PROCEDURE handlerSample ()
BEGIN
    DECLARE EXIT HANDLER FOR SQLSTATE '42002', SQLWARNING, NOT FOUND
        INSERT INTO Proc_Error_Table ('procSample', 'Failed SqlState or SqlWarning or Not Found');
    SELECT * FROM Proc_Error_Table;
END;

Snowflake Scripting

CREATE OR REPLACE PROCEDURE PUBLIC.handlerSample ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
   BEGIN
      /*** MSC-ERROR - MSCEWI1058 - FUNCTIONALITY FOR 'SQLSTATE, SQLWARNING, NOT-FOUND TYPES HANDLER' IS NOT CURRENTLY SUPPORTED BY SNOWFLAKE SCRIPTING ***/
      /*    DECLARE EXIT HANDLER FOR SQLSTATE '42002', SQLWARNING, NOT FOUND INSERT INTO PUBLIC.Proc_Error_Table VALUES ('procSample', 'Failed SqlState or SqlWarning or Not Found');*/
      SELECT * FROM PUBLIC.Proc_Error_Table;
   END;
$$;
  1. MSCEWI1058: Functionality is not currently supported by Snowflake Scripting

Last updated