Hello,
How can i handle exceptions in HANA SQL Stored procedure? I want to capture all exceptions, log errors into a table and then re-throw the exceptions to the client application. How can I do that?
Here is the one i have been trying for long time. But no luck.
========================================
SET SCHEMA JEDAR_1; --DROP TABLE ERR_TABLE; CREATE ROW TABLE ERR_TABLE ( ROW_ID INT PRIMARY KEY, SQL_ERROR_CODE INT, SQL_ERROR_MESSAGE VARCHAR(5000), PROCEDURE_NAME VARCHAR(5000), PARAMETERS VARCHAR(5000), SYSDATE DATE ); CREATE SEQUENCE ERR_TABLESeq RESET BY SELECT IFNULL(MAX(ROW_ID), 0) + 1 FROM ERR_TABLE; --DROP PROCEDURE "SaveParams" ; CREATE PROCEDURE "SaveParams" ( IN p_threshold INT ,IN p_str_keys VARCHAR ,IN p_wrd_keys VARCHAR ) LANGUAGE SQLSCRIPT AS BEGIN DECLARE myParams VARCHAR(5000); DECLARE errCode INT; DECLARE errMsg VARCHAR(5000); DECLARE MYCOND CONDITION; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SELECT TO_VARCHAR(p_threshold) || '#' || p_str_keys || '#' || p_wrd_keys, ::SQL_ERROR_CODE, ::SQL_ERROR_MESSAGE INTO myParams, errCode, errMsg FROM DUMMY; --STORED ERROR DETAILS INTO ERR TABLE AND THEN EXIT FROM PROCEDURE INSERT INTO ERR_TABLE (ROW_ID, SQL_ERROR_CODE, SQL_ERROR_MESSAGE, PROCEDURE_NAME, PARAMETERS, SYSDATE) VALUES (ERR_TABLESeq.NEXTVAL, :errCode, :errMsg, 'SaveParams', :myParams, CURRENT_DATE); -- RE-THROWING THE EXCEPTION RESIGNAL; END; SELECT 1/0 FROM DUMMY; END; CALL "SaveParams" (1, 'KEY1,KEY2', 'KEY3,KEY4'); SELECT * FROM ERR_TABLE;
=========================================
Regards,
TK