Use the RAISE
statement to report messages and raise errors.
Notice that this translation spec applies only to RAISE statements that have level with the value of NOTICE and EXCEPTION.
RAISE [ level ] 'format' [, expression [, ... ]] [ USING option = expression [, ... ] ];
RAISE [ level ] condition_name [ USING option = expression [, ... ] ];
RAISE [ level ] SQLSTATE 'sqlstate' [ USING option = expression [, ... ] ];
RAISE [ level ] USING option = expression [, ... ];
RAISE ;
Sample Source Patterns with RAISE NOTICE
CREATE FUNCTION FunctionName1() RETURNS void
AS $$
declare
v_var1 character varying(50);
v_var2 character varying(50);
BEGIN
v_var1 := 'First';
v_var2 := 'Second';
RAISE NOTICE '% - Current schema is %',v_var1, v_var2;
END;
$$
LANGUAGE plpgsql NO SQL;
/*** MSC-WARNING - MSC-GP0002 - NON-RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/
CREATE OR REPLACE PROCEDURE FunctionName1 () RETURNS STRING
LANGUAGE SQL
AS $$
declare
v_var1 character varying(50);
v_var2 character varying(50);
BEGIN
v_var1 := 'First' /*** MSC-ERROR - MSCEWI1073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'AssignStat' NODE ***/;
v_var2 := 'Second' /*** MSC-ERROR - MSCEWI1073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'AssignStat' NODE ***/;
LET SC_RAISE_MESSAGE VARCHAR;
SC_RAISE_MESSAGE := STRING_FORMAT_UDF('% - Current schema is %', array_construct(:v_var1, :v_var2));
--** MSC-INFORMATION - MSCINF0040 - RAISE NOTICE TRANSLATED TO USER-DEFINED STORED PROCEDURE **
CALL RAISE_MESSAGE_UDF('NOTICE', :SC_RAISE_MESSAGE);
RETURN 'SUCCESS';
END;
$$;
Sample Source Patterns with RAISE EXCEPTION
CREATE FUNCTION FunctionName1() RETURNS void
AS $$
declare
v_var1 character varying(50);
v_var2 character varying(50);
BEGIN
v_var1 := 'Hola';
v_var2 := 'Adios';
RAISE EXCEPTION '% - Current schema is %',v_var1, v_var2;
EXCEPTION
WHEN OTHERS THEN
RAISE EXCEPTION '% - %',v_var1, v_var2;
RETURN;
END;
$$
LANGUAGE plpgsql NO SQL;
/*** MSC-WARNING - MSC-GP0002 - NON-RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/
CREATE OR REPLACE PROCEDURE FunctionName1 () RETURNS STRING
LANGUAGE SQL
AS $$
declare
v_var1 character varying(50);
v_var2 character varying(50);
BEGIN
v_var1 := 'Hola' /*** MSC-ERROR - MSCEWI1073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'AssignStat' NODE ***/;
v_var2 := 'Adios' /*** MSC-ERROR - MSCEWI1073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'AssignStat' NODE ***/;
LET SC_RAISE_MESSAGE VARCHAR;
SC_RAISE_MESSAGE := STRING_FORMAT_UDF('% - Current schema is %', array_construct(:v_var1, :v_var2));
--** MSC-ERROR - MSC-PG0013 - UNSUPPORTED RAISE EXCEPTION, CREATING A DYNAMIC CUSTOM EXCEPTION IS NOT SUPPORTED IN SNOWFLAKE. **
CALL RAISE_MESSAGE_UDF('EXCEPTION', :SC_RAISE_MESSAGE);
RETURN 'SUCCESS';
EXCEPTION
WHEN OTHER THEN
SC_RAISE_MESSAGE := STRING_FORMAT_UDF('% - %', array_construct(:v_var1, :v_var2));
--** MSC-INFORMATION - MSCINF0042 - RAISE EXCEPTION TRANSLATED TO USER-DEFINED STORED PROCEDURE CALL AND RAISE STAT **
CALL RAISE_MESSAGE_UDF('EXCEPTION', :SC_RAISE_MESSAGE);
RAISE;
RETURN;
END;
$$;