把用例执行情况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. 成都传智播客java就业班和基础班

    传智播客成都Java培训,带你走进Java的世界... 我们有咨询的教育团队,一流的名师指导: 我们是重视基础理论建设,强化高端应用技能: 我们有四大JavaEE项目,海量Android项目: 我们是 ...

  2. iPhone应用程序间传递数据

    前一篇简单的介绍了iPhone应用程序间通信,主要是通过在被调用应用的Info.plist中加入URL方案,在应用中通过openUrl来实现程序的调用.而应用程序间的数据传递则可以更具url来实现,例 ...

  3. 数据库存储过程 — Sql Server

    Mysql.Oracle等主流关系型数据库基本都支持存储过程,这里使用Sql Server为例进行说明. 存储过程的概念: Sql Server存储过程 SQL Server 中的存储过程是由一个或多 ...

  4. HTML与CSS入门——第五章 使用文本块和列表

    知识点: 1.在页面上对齐文本的方法 2.三种HTML列表的使用方法 3.在列表中放置列表的方法 5.1 在页面上对齐文本: 父元素内子元素文本的居中:在控制父元素的text-align:center ...

  5. (转)使用 .NET 的 RNGCryptoServiceProvider 生成随机数

    1. [代码]一个简单的方法,但不够可靠     跳至 [1] [2] [全屏预览] ? 1 2 3 4 5 6 7 8 9 10 11 static void Main(string[] args) ...

  6. ORACLE查询数据库的锁表情况

      查询数据库的锁表情况语句如下: SELECT p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_na ...

  7. [JavaScript] 判断键盘同时按某些键时执行操作。

    前言:之前知乎上看到过一个介绍国外炫酷网站的,其中一个敏感网站用同时按住"q.a.p.l" 才能观看视频 放手则立即强制停止 (手动斜眼).这个功能的实际用处,我认为是可以在做一些 ...

  8. Access中的SELECT @@IDENTITY

    在Access数据库中存在select @@identity吗?答案是肯定的.但是Access一次只能执行一条SQL,多条SQL需要多次执行,这是限制.在SQL Server中,可以一次执行多条SQL ...

  9. GCD使用经验与技巧浅谈--备

    GCD(Grand Central Dispatch)可以说是Mac.iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧. dispatch_once_t必须是全局或static变量 ...

  10. CryEngine3教程合辑

    转载自http://tieba.baidu.com/p/3663800102 作者:Tytaa     中文名称: CryEngine游戏关卡设计训练视频教程第一季 外文名称: 3DMotive In ...