• DB2测试存储过程的原子性


    存储过程在运行过程中需要对其做异常处理、原子性等测试

    下面是一个原子性测试案例

    =====================================

    代码区域

    =====================================

    建表SQL:

    DROP TABLE DB2ADMIN.TB_1;
    
    CREATE TABLE DB2ADMIN.TB_1
        (
        ID   INTEGER,
        NAME VARCHAR (100)
        )
        IN USERSPACE1;
    DROP TABLE DB2ADMIN.TB_2;
    
    CREATE TABLE DB2ADMIN.TB_2
        (
        ID   INTEGER NOT NULL,
        NAME VARCHAR (100),
        PRIMARY KEY (ID)
        )
        IN USERSPACE1;

    存储过程

    CREATE PROCEDURE  TST_PRO(
    OUT P_OUT_FLAG VARCHAR(10)
    )
    
    SPECIFIC  TST_PRO
    LANGUAGE  SQL
    NOT DETERMINISTIC
    CALLED ON NULL INPUT
    EXTERNAL ACTION
    OLD SAVEPOINT LEVEL
    MODIFIES SQL DATA
    INHERIT SPECIAL REGISTERS
    
    P1:BEGIN 
    --======================声明异常 存储过程 返回0为成功  返回1为失败
        DECLARE SQL_CODE  INTEGER DEFAULT 0;
        DECLARE SQLSTATE  CHAR(5) DEFAULT '00000';
        DECLARE SQLCODE   INTEGER DEFAULT 0;
        DECLARE SQLMSG    VARCHAR(400) DEFAULT '';
        
        declare V_COUNT INTEGER ;
            
        DECLARE CONTINUE HANDLER FOR NOT FOUND, SQLEXCEPTION ,SQLWARNING
        BEGIN
         SET  SQL_CODE=SQLCODE;
           IF SQL_CODE=-803 THEN 
           SET P_OUT_FLAG=SQL_CODE;
           END IF;
        END;
        
        INSERT INTO tb_1 values(1,'插入');
        
        GET DIAGNOSTICS V_COUNT=ROW_COUNT;
        IF V_COUNT<1 THEN 
           ROLLBACK;
           SET p_OUT_FLAG='1';
           RETURN ;
         END IF;
         
        INSERT INTO tb_2 values(1,'插入1');
        
        IF SQL_CODE=0 OR SQL_CODE=100 THEN 
          SET P_OUT_FLAG= '0';
          ELSE SET P_OUT_FLAG=SQL_CODE;
          ROLLBACK;
        END IF;
    
    
    END P1;

    执行存储过程2次,查询2个表中的数据,如果表tb_1有2条数据,那么证明这个存储过程不具有原子性。 

  • 相关阅读:
    简明python教程九----异常
    简明python教程八----输入/输出
    简明python教程七----面向对象的编程(下)
    vue --- 生命周期
    es6 ----- export 和 import
    jq ---- 实现浏览器全屏
    Vue项目自动转换 px 为 rem,高保真还原设计图
    vue ---- 实现手机端(左滑 删除。右划 正常)
    js---- localStorage的基本用法
    点击 下载文件保存
  • 原文地址:https://www.cnblogs.com/OliverQin/p/6144153.html
Copyright © 2020-2023  润新知