把用例执行情况mysql表汇总起来

proc_write_report  汇总执行用例表中的测试数据  写入report 表,report表包括字段

 report_id(自增)execution_flag,class_name,method_name, module,case_name,execution_amount, pass_amount,fail_amount,fail_reason,`time`,`comment`

DELIMITER $$
USE `test_cases`$$
DROP PROCEDURE IF EXISTS `proc_write_report`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_write_report`(IN p_table_name VARCHAR(80),IN p_class_name VARCHAR(80),IN p_method_name VARCHAR(80),IN p_execution_flag VARCHAR(80))
BEGIN
DECLARE var_class_name VARCHAR(180) DEFAULT NULL; -- 测试类名
DECLARE var_method_name VARCHAR(180) DEFAULT NULL; -- 测试方法名
DECLARE var_module VARCHAR(180) DEFAULT NULL; -- 测试模块 中文
DECLARE var_case_name VARCHAR(180) DEFAULT NULL; -- 测试用例名称 中文
DECLARE var_pass_amount INT DEFAULT 0; -- 通过用例数量
DECLARE var_fail_amount INT DEFAULT 0; -- 失败用例数量
DECLARE var_fail_reason VARCHAR(2000) DEFAULT NULL; -- 失败原因
DECLARE var_comment VARCHAR(2000) DEFAULT NULL; -- 备注
DECLARE var_sql_string VARCHAR(2000) DEFAULT NULL; -- sql 语句 SET @var_cass_name = p_class_name;
SET @var_method_name = p_method_name; -- 获取成功用例数
SET @var_sql_string = CONCAT("select * from ",p_table_name," where test_method = '",p_method_name,"' and execution_flag = '",p_execution_flag,"' and test_class = '",p_class_name,"' and is_select = 1 and is_pass = 1 ");
-- SELECT @var_sql_string;
CALL p_get_select_row_number(@var_sql_string,@var_pass_amount);
-- SELECT @var_pass_amount;
-- 获取失败用例数
SET @var_sql_string = CONCAT("select * from ",p_table_name," where test_method = '",p_method_name,"' and execution_flag = '",p_execution_flag,"' and test_class = '",p_class_name,"' and is_select = 1 and is_pass = 0 ");
-- SELECT @var_sql_string;
CALL p_get_select_row_number(@var_sql_string,@var_fail_amount);
-- SELECT @var_fail_reason; -- 获取用例模块中文名称
SET @var_sql_string = CONCAT("SELECT DISTINCT test_module_name FROM ",p_table_name," WHERE execution_flag = '",p_execution_flag,"' AND test_method = '",p_method_name,"'");
-- select @var_sql_string;
CALL proc_get_table_column_content(@var_sql_string,@var_module);
-- SELECT @var_module; -- 获取用例方法中文名称
SET @var_sql_string = CONCAT("SELECT DISTINCT test_case_name FROM ",p_table_name," WHERE execution_flag = '",p_execution_flag,"' AND test_method = '",p_method_name,"'");
-- select @var_sql_string;
CALL proc_get_table_column_content(@var_sql_string,@var_case_name);
-- SELECT @var_module; -- select * from `execution_send_express_sf`; SET @var_sql_string = CONCAT("select distinct actual_result from ",p_table_name," where test_method = '",p_method_name,"' and execution_flag = '",p_execution_flag,"' and test_class = '",p_class_name,"' and is_select = 1 and is_pass = 0 and is_execution = 1");
-- SELECT @var_sql_string;
CALL proc_get_table_column_content(@var_sql_string,@var_fail_reason);
-- SELECT @var_fail_reason ; IF (SELECT COUNT(*) FROM report WHERE execution_flag = p_execution_flag
AND class_name = p_class_name AND method_name = p_method_name ) THEN UPDATE report SET class_name = p_class_name, method_name = p_method_name,
module = @var_module, case_name = @var_case_name,
execution_amount = (@var_pass_amount + @var_fail_amount), pass_amount = @var_pass_amount , fail_amount = @var_fail_amount,
fail_reason = @var_fail_reason, `COMMENT` = @var_comment, `TIME` = NOW()
WHERE execution_flag = p_execution_flag AND class_name = p_class_name AND method_name = p_method_name ; ELSE
INSERT INTO report(execution_flag,class_name,method_name,
module,case_name,execution_amount,
pass_amount,fail_amount,fail_reason,`time`,`comment`)
VALUES (p_execution_flag,p_class_name,p_method_name,
@var_module,@var_case_name,(@var_fail_amount + @var_pass_amount),
@var_pass_amount,@var_fail_amount,@var_fail_reason,NOW(),@var_comment ); END IF; END$$ DELIMITER ;

 

获取查询语句影响的行数,输入查询,输出行数


DELIMITER $$

USE `test_cases`$$

DROP PROCEDURE IF EXISTS `proc_get_select_row_number`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `p_get_select_row_number`(IN p_select_sql VARCHAR(500), OUT p_count INT(8) )
BEGIN
-- 声明
DECLARE cnt INT DEFAULT 0;
DECLARE stmt VARCHAR(200); -- 赋值
SET @stmt = CONCAT(p_select_sql);
-- prepare
PREPARE s1 FROM @stmt;
-- 执行
EXECUTE s1;
-- 获取查询影响的行数
SET @cnt = FOUND_ROWS();
-- 输出影响函数
SELECT @cnt INTO p_count ;
END$$ DELIMITER ;

 
proc_get_table_column_content存储过程,

把某个字段里面查找出来的多个值,循环取出,赋值追加拼接到另外一个变量里面去,输入的查询语句最多只有一个字段

DELIMITER $$

USE `test_cases`$$

DROP PROCEDURE IF EXISTS `proc_get_table_column_content`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_get_table_column_content`(IN select_sql_string VARCHAR(1000), OUT return_string VARCHAR(5000))
BEGIN
DECLARE no_more_contents INT DEFAULT 0;
DECLARE var_id INT;
-- 保存单个内容
DECLARE var_content VARCHAR(200) DEFAULT NULL;
-- 保存所有类容
DECLARE var_all_content VARCHAR(5000) DEFAULT NULL;
-- 保存查询语句
DECLARE var_sql VARCHAR(1000) DEFAULT NULL; -- 定义游标
DECLARE dept_csr CURSOR FOR SELECT * FROM tmp_table;
-- 错误处理
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_contents=1; -- 使用临时表
-- 删除临时表
DROP TEMPORARY TABLE IF EXISTS tmp_table; -- 组装创建临时表语句
SET var_sql = CONCAT('CREATE TEMPORARY TABLE tmp_table ',select_sql_string);
SET @var_sql=var_sql;
-- select var_sql;
-- 预处理要执行的动态SQL
PREPARE stmt FROM @var_sql;
-- 执行SQL语句
EXECUTE stmt;
-- 释放掉预处理段
DEALLOCATE PREPARE stmt;
SET no_more_contents=0;
-- 打开游标
OPEN dept_csr; contentloop: LOOP FETCH dept_csr INTO var_content;
-- 如果没有值,退出循环
IF no_more_contents = 1 THEN
LEAVE contentloop;
END IF;
-- select var_content;
-- 循环取值,并且把不同的值追加赋给同一个变量
-- SELECT var_content;
-- SELECT var_all_content AS A;
IF var_all_content IS NULL THEN
SET var_all_content = var_content;
ELSEIF (var_content IS NOT NULL) && (LENGTH(var_content)!=0) THEN
SET var_all_content = CONCAT(var_all_content,'、',var_content);
END IF;
-- SELECT var_all_content AS B;
-- select var_all_content;
-- 循环结束 退出循环
IF no_more_contents = 1 THEN
LEAVE contentloop;
END IF;
-- SELECT var_all_content AS A;
END LOOP contentloop;
-- 关闭游标
CLOSE dept_csr;
SET no_more_contents=0;
SELECT var_all_content INTO return_string;
DROP TEMPORARY TABLE tmp_table;
END$$ DELIMITER ;

mysql 存储过程 计算报表的更多相关文章

  1. 写一个MySql存储过程实现房贷等额本息还款计算(另外附javascript代码)

    写一个MySql存储过程实现房贷等额本息还款计算 MySql存储过程代码如下: DROP procedure IF EXISTS `calc_equal_interest_proc`; DELIMIT ...

  2. 什么时候PHP经验MySQL存储过程

    1.MySQL存储过程 数据库语言,我们经常使用的操作SQL语句必须首先编译在运行时.然后运行,存储过程(Stored Procedure)它被设置为完成一个特定的功能SQL报表设置.编译存储在数据库 ...

  3. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  4. MySQL 存储过程

    MySQL 存储过程 存储过程是通过给定的语法格式编写自定义的数据库API,类似于给数据库编写可执行函数. 简介 存储过程是一组为了完成特定功能的SQL语句集合,是经过编译后存储在数据库中. 存储过程 ...

  5. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  6. Mysql存储过程调用

    mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下.   1.1create  p ...

  7. 《MySQL 存储过程编程》-读书笔记

    本书结构: 第一部分:存储编程基础 第1章:存储过程程序基础 第2章:MySQL存储编程指南 第3章:语言基础 第4章:语句块 第5章:在存储程序中使用SQL 第一章:MySQL存储程序介绍 存储程序 ...

  8. Mysql 存储过程基本语法

    delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...

  9. MySQL 存储过程传参之in, out, inout 参数用法

    存储过程传参:存储过程的括号里,可以声明参数. 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..) in :给参数传入值,定义的参数就得到了值 ou ...

随机推荐

  1. JavaScript学习笔记(高级部分—01)

    JavaScript的核心ECMAScript描述了该语言的语法和基本对象:DOM描述了处理网页内容的方法和接口:BOM描述了与浏览器进行交互的方法和接口. 简单说,ECMAScript描述了以下内容 ...

  2. C++沉思录之二——虚函数使用的时机

    虚函数使用的时机 为什么虚函数不总是适用? 1. 虚函数有事会带来很大的消耗: 2. 虚函数不总是提供所需的行为: 3. 当我们不考虑继承当前类时,不必使用虚函数. 必须使用虚函数的情况: 1. 当你 ...

  3. Java可见性机制的原理

    基本概念 可见性 当一个线程修改了共享变量时,另一个线程可以读取到这个修改后的值. 内存屏障(Memory Barriers) 处理器的一组指令,用于实现对内存操作的顺序限制. 缓冲行 CPU告诉缓存 ...

  4. oracle 按某个字段查询重复数据

    /* 手机号为重复的会员,获取其最大会员id,对应的会员信息 */ SELECT * FROM MEMBER a WHERE a.member_id IN ( SELECT MAX(member_id ...

  5. css伪类选择器详细解析及案例使用-----伪类选择器(1)

    动态伪类选择器:E:link :选择匹配的E元素,并且匹配元素被定义了超链接并未被访问过.E:visited :选择匹配的E元素,而且匹配的元素被定义了连接并已被访问过.E:active :选择匹配的 ...

  6. Head First HTML与CSS — 布局与定位

    1.流(flow)是浏览器在页面上摆放HTML元素所用的方法. 对于块元素,浏览器从上到下沿着元素流逐个显示所遇到的各个元素,会在每个块元素之间加一个换行: 对于内联元素,在水平方向会相互挨着,总体上 ...

  7. C# Socket传输大文件

    1.基础类TransferFiles,client和server都需要 using System; using System.Collections.Generic; using System.Tex ...

  8. String.PadLeft - 格式对齐

    语法:public string PadLeft( int totalWidth, char paddingChar ) 概述,实现的效果是右对齐,返回一个总长度为 totalWidth,如果实际长度 ...

  9. SQL2008转SQL2005数据库经验

    1.用SQL2008创建兼容2005的结构脚本. 2.在2005中生成数据库结构. 3.利用2005中的数据导入直接从源数据库中导入数据,此处注意自增长标识的选项需要添加,多表优化选项可以去掉,这里不 ...

  10. displaytag 简单使用流程

    1. 首先导入包:displaytag-1.2.jar,commons-lang.jar和standard.jar;commons-beanutils.jar;这四个jar包 2. 然后在jsp页面做 ...