把用例执行情况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. 你需要知道的九大排序算法【Python实现】之基数排序

    八.基数排序 基本思想:基数排序(radix sort)属于"分配式排序"(distribution sort),又称"桶子法"(bucket sort)或bi ...

  2. poj 3181 Dollar Dayz (整数划分问题---递归+DP)

    题目:http://poj.org/problem?id=3181 思路:将整数N划分为一系列正整数之和,最大不超过K.称为整数N的K划分. 递归:直接看代码: 动态规划:dp[i][j]:=将整数i ...

  3. ContextLoaderListener初始化的前后文和DispatcherServlet初始化的上下文关系

    ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层.Service层Bean: DispatcherServlet ...

  4. RPM包查询

    一.查询包是否安装 [root@localhost Packages]# rpm -q httpd            ---> 查询已安装的包(命令包名) #选项: #    -q    查 ...

  5. 配置NFS服务

    1. NFS配置,需要安装哪些包?nfs-utils  和 rpcbind2. 如果不开启rpcbind服务,就启动NFS,会怎么样?如果不开启rpcbind服务,会报错:rpc.nfsd: writ ...

  6. Ajax七层模型用途

    Ajax七层模型 OSI七层模型满足所有网格模型 1.物理层:符合标准: 2.数据链路层:如网卡.水晶头.连接网络层等: 3.网络层:路由器(数据外围打IP地址): 4.传输层:两台计算器端口的连接: ...

  7. $(document).ready(); $().ready(); $()

    $(document).ready(function(){}); $().ready(function(){}); $(function(){}), 三者效果是一样的,在文档加载完成之后执行()中的代 ...

  8. 查看Linux相关信息

    1."uname -a ",可显示电脑以及操作系统的相关信息. 2."cat /proc/version",说明正在运行的内核版本. 3."cat / ...

  9. Slony-I双机备份

    测试环境:postgresql 9.3.5,slony-I2.2.3(application stack builder提供)以下参考网上教程亲自测试总结 ---------------------- ...

  10. poj 1080 dp

    基因配对 给出俩基因链和配对的值  求配对值得最大值  简单dp #include<iostream> #include<stdio.h> #include<string ...