THROW

Description

Implements error handling for Transact SQL. A group of Transact-SQL statements can be enclosed in a TRY block. If an error occurs in the TRY block, control is usually passed to another group of statements that is enclosed in a CATCH block.

Sample Source Patterns

The following example details the transformation for THROW statement without custom message.

SQL Server

CREATE PROCEDURE THROW_PROCEDURE AS
BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    THROW;
END CATCH

Snowflake SQL

CREATE OR REPLACE PROCEDURE THROW_PROCEDURE ()
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
    BEGIN
        BEGIN
            SELECT
                TRUNC( 1/0);
        EXCEPTION
            WHEN OTHER THEN
                LET DECLARED_EXCEPTION EXCEPTION;
                RAISE DECLARED_EXCEPTION;
        END;
    END;
$$;

The following example details the transformation for THROW statement with a custom message.

SQL Server

CREATE PROCEDURE THROW_PROCEDURE AS
BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    DECLARE @ERROR_MSG VARCHAR(max) = 'DIVISION BY 0';
    THROW  50000, @ERROR_MSG, 1;
END CATCH

Snowflake SQL

CREATE PROCEDURE THROW_PROCEDURE AS
BEGIN TRY
    SELECT 1/0;
END TRY
BEGIN CATCH
    DECLARE @ERROR_MSG VARCHAR(max) = 'DIVISION BY 0';
    THROW  50000, @ERROR_MSG, 1;
END CATCH
  • For THROW statements without a custom message, the default message from SQL Server and Snowflake may be different.

No related EWIs.

Last updated