DB2存储过程

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
  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值