У меня есть это:
CREATE OR replace PROCEDURE log_test
( IN QUERY VARCHAR(24576),
IN LOGTBL varchar(20) ) LANGUAGE SQL
BEGIN
DECLARE v_select_query VARCHAR(24576);
DECLARE v_query VARCHAR(24576);
DECLARE v_logtbl varchar(20);
DECLARE v_errormsg varchar(2048);
DECLARE v_time TIMESTAMP;
DECLARE v_temp_select varchar(1024);
DECLARE stmt STATEMENT;
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE CONTINUE HANDLER
FOR SQLEXCEPTION,SQLWARNING,NOT FOUND
SET v_sqlcode = SQLCODE;
set v_select_query = 'Set (?) = ('||QUERY||')';
set v_query = 'Set (?) = ('||QUERY||')';
set v_bezug = bezug;
set v_logtbl = logtbl;
set v_time = CURRENT TIMESTAMP;
PREPARE stmt from v_select_query;
EXECUTE stmt into v_temp_select;
END @
Запрос оператора:
select count(*) from testtbl;
и без перехвата sqlstate работает.
В результате я хочу, чтобы sqlcode был сохранен в переменных, когда оператор выполнен успешно или не выполнен.Однако теперь я получаю только сообщение об ошибке, которое после «неожиданного токена».
Есть идеи как это исправить?Позже я хочу записать sqlcode со вставкой в другую таблицу.
DB2 Windows v10.5
Спасибо за вашу помощь