Существует порядок объявлений:
DECLARE variables/condition handlers
DECLARE cursors
DECLARE handlers
Первый SET
завершает часть объявления.
Вам необходимо переместить SET после обработчика.
REPLACE PROCEDURE DM.AZ_SP ( IN IN_S_DATE DATE, IN IN_E_DATE DATE, OUT sqlMsg_result VARCHAR(133) )
SQL SECURITY INVOKER
BEGIN
DECLARE V_S_DATE DATE;
DECLARE V_E_DATE DATE;
DECLARE V_REPORT_DATE DATE;
DECLARE sted_id INTEGER DEFAULT 0;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
insert into DM.t_sp_logs values (
current_timestamp
, 'AZ_SP'
, sted_id
, 'ERROR code: ' || :SQL_CODE
); -- Missing/Invalid SQL statement'E(3707):Syntax error, expected something like an 'END' keyword between ';' and the 'DECLARE' keyword.'.
END;
SET V_S_DATE = IN_S_DATE;
SET V_E_DATE = IN_E_DATE;
SET sted_id = 0;
SET sted_id = 1;
END;
или вы используете вложенный BEGIN / END, после каждого BEGIN
REPLACE PROCEDURE DM.AZ_SP ( IN IN_S_DATE DATE, IN IN_E_DATE DATE, OUT sqlMsg_result VARCHAR(133) )
SQL SECURITY INVOKER
BEGIN
DECLARE V_S_DATE DATE;
DECLARE V_E_DATE DATE;
DECLARE V_REPORT_DATE DATE;
DECLARE sted_id INTEGER DEFAULT 0;
SET V_S_DATE = IN_S_DATE;
SET V_E_DATE = IN_E_DATE;
SET sted_id = 0;
SET sted_id = 1;
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
insert into DM.t_sp_logs values (
current_timestamp
, 'AZ_SP'
, sted_id
, 'ERROR code: ' || :SQL_CODE
); -- Missing/Invalid SQL statement'E(3707):Syntax error, expected something like an 'END' keyword between ';' and the 'DECLARE' keyword.'.
END;
.....
END;
END;
появляется новая часть объявления