LANGUAGE SQL
p:BEGIN
declare SQLCODE INTEGER DEFAULT 0;
declare SQL_CODE integer default 0;---错误代码
declare sqlMsg varchar(200) default '';----错误描述
declare V_SQLSTR2 varchar(1000);
declare V_SQLSTR4 varchar(1000);
DECLARE STMT1 STATEMENT;
DECLARE C1 CURSOR FOR STMT1; ----游标
--声明异常 存储过程
DECLARE CONTINUE HANDLER FOR NOT FOUND, SQLEXCEPTION, SQLWARNING
SUB:BEGIN
SET SQL_CODE = SQLCODE;
END SUB;
set V_STARTTIME = (select current timestamp FROM sysibm.sysdummy1);
set V_SQLSTR4 = 'select T.COLUMN_NAME, T.STATUS';
PREPARE STMT1 FROM V_SQLSTR4;
set SQL_CODE = 0;
OPEN C1;
C1_LOOP:
LOOP
FETCH C1 INTO V_COLUMN, V_STATUSE;
IF SQL_CODE <> 0 THEN
LEAVE C1_LOOP;
END IF;
IF V_SQLSTR2 = '' THEN
SET V_SQLSTR2 = V_SQLSTR2 || V_COLUMN;
ELSE
SET V_SQLSTR2 = V_SQLSTR2 || ',' || V_COLUMN;
END IF;
END LOOP C1_LOOP;
CLOSE C1;
set V_SQLSTR = 'INSERT INTO ';
EXECUTE IMMEDIATE V_SQLSTR;
COMMIT;
IF sql_code = 0 or sql_code = 100 or sql_code = -20448 THEN
CALL sp_job_step_timer();
ELSE
---记录日志异常信息
CALL sp_job_stemp_timer('出现错误' || FUN_DB2_ERROR(CHAR(sql_code)));
END IF;
---错误处理机制
if sql_code <> 0 then
set sqlMsg = '出错!';
goto ERROR_RETURN;
end if;
set sqlMsg = '成功!';
set sql_code = 0;
return 1;
commit;
ERROR_RETURN:
ROLLBACK;
return -1;
END p
DB2存储过程
于 2022-03-21 10:32:49 首次发布