DB2 SQLSTATE=42601

CREATE PROCEDURE DOLOWN.BUSINESS_TOTALREPORT ()
  LANGUAGE SQL
  NOT DETERMINISTIC
  CALLED ON NULL INPUT
  MODIFIES SQL DATA
  INHERIT SPECIAL REGISTERS

BEGIN

DECLARE SQLCODE      INTEGER DEFAULT 0; -- 异常代码
DECLARE R_CODE       INTEGER DEFAULT 0; -- 存放异常码                                                                                    DECLARE SQLCMD       VARCHAR(6000);           --动态SQL
DECLARE CARS         VARCHAR(500);                                                                                                                             DECLARE V_SERIES_ID  INTEGER;        
DECLARE V_DEALER_ID                 INTEGER;             
DECLARE V_DEALERSHORT_NAME          VARCHA(150);                                                                                          DECLARE COMPANYID     INTEGER;
DECLARE CURSORSERIES  CURSOR WITH HOLD FOR     -- 在游标中使用COMMIT 时 声明 WITH HOLD
          SELECT SERIES_ID FROM TM_SERIES WHERE COMPANY_ID = COMPANYID;

SET COMPANYID = 10000002;                                                                                                                                           SET CARS = '';
SET SQLCMD = ''; 

--声明出错处理
 --如果出现SQL异常 将结果记录并继续执行后面结果
    DECLARE EXIT  HANDLER FOR SQLEXCEPTION 
    BEGIN
       SET R_CODE=2;                          
    END;   
    --当SELECT 语句没有找到 任何记录时 回滚刚才操作
    DECLARE CONTINUE HANDLER FOR NOT FOUND  
 BEGIN
        SET R_CODE=1;       
 END;   
 OPEN CURSORSERIES;
 
   FETCH CURSORSERIES INTO V_SERIES_ID;
  
   WHILE R_CODE = 0 DO                                                                                                                                               SET CARS = CARS||CHAR(V_SERIES_ID)||',';
  FETCH CURSORSERIES INTO V_SERIES_ID;
   END WHILE;
 
 IF CARS IS NOT NULL  AND R_CODE = 1 THEN
    SET R_CODE = 0;
 END IF;
CLOSE CURSORSERIES;  

END;

执行时报错   SQLSTATE=42601

把出错处理那部分放到另一块中顺利执行

 

CREATE PROCEDURE DOLOWN.BUSINESS_TOTALREPORT ()
  LANGUAGE SQL
  NOT DETERMINISTIC
  CALLED ON NULL INPUT
  MODIFIES SQL DATA
  INHERIT SPECIAL REGISTERS

P1: BEGIN

DECLARE SQLCODE      INTEGER DEFAULT 0; -- 异常代码
DECLARE R_CODE       INTEGER DEFAULT 0; -- 存放异码         

--声明出错处理
 --如果出现SQL异常 将结果记录并继续执行后面结果
    DECLARE EXIT  HANDLER FOR SQLEXCEPTION 
    BEGIN
       SET R_CODE=2;                          
    END;   
    --当SELECT 语句没有找到 任何记录时 回滚刚才操作
    DECLARE CONTINUE HANDLER FOR NOT FOUND  
 BEGIN
        SET R_CODE=1;       
 END;                                                                                

P2: BEGIN

DECLARE SQLCMD       VARCHAR(6000);           --动态SQL
DECLARE CARS         VARCHAR(500);                                                                                                                             DECLARE V_SERIES_ID  INTEGER;        
DECLARE V_DEALER_ID                 INTEGER;             
DECLARE V_DEALERSHORT_NAME          VARCHA(150);                                                                                          DECLARE COMPANYID     INTEGER;
DECLARE CURSORSERIES  CURSOR WITH HOLD FOR     -- 在游标中使用COMMIT 时 声明 WITH HOLD
          SELECT SERIES_ID FROM TM_SERIES WHERE COMPANY_ID = COMPANYID;

SET COMPANYID = 10000002;                                                                                                                                           SET CARS = '';
SET SQLCMD = ''; 

  
 OPEN CURSORSERIES;
 
   FETCH CURSORSERIES INTO V_SERIES_ID;
  
   WHILE R_CODE = 0 DO                                                                                                                                               SET CARS = CARS||CHAR(V_SERIES_ID)||',';
  FETCH CURSORSERIES INTO V_SERIES_ID;
   END WHILE;
 
 IF CARS IS NOT NULL  AND R_CODE = 1 THEN
    SET R_CODE = 0;
 END IF;
CLOSE CURSORSERIES;  

   END P2;

END P1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值