计算数据库中数据总和的存储过程
来源:互联网 发布:淘宝线下超市 编辑:程序博客网 时间:2024/06/14 19:22
需改进的地方: 年, 月, 需要改进
DROP PROCEDURE IF EXISTS `pSum_TABLE_ROWS`;
CREATE DEFINER=`root`@`%` PROCEDURE `pSum_TABLE_ROWS`(
IN inDBName varchar(40),
IN inTABLEPrefix varchar(40),
IN inYear INT,
IN inMonth INT,
IN inDayStart INT,
IN inHourStart INT,
IN inDayEnd INT,
IN inHourEnd INT
)
BEGIN
DECLARE v_tableName varchar(40);
DECLARE vFLAG INT DEFAULT 0;
DECLARE vSameDayFLAG INT DEFAULT 0;
DECLARE vDay_start INT DEFAULT 0;
DECLARE vDay_end INT DEFAULT 0;
DECLARE vHour_start INT DEFAULT 0;
DECLARE vHour_end INT DEFAULT 0;
DECLARE szMonth char(10);
DECLARE szDay char(10);
DECLARE szHour char(10);
DECLARE sum_table_rows INT DEFAULT 0;
SET sum_table_rows = 0;
IF ( inDayStart > inDayEnd) THEN
select 'Day errror';
SET vFLAG = -1;
ELSE
IF ( inDayStart = inDayEnd AND inHourStart >= inHourEnd) THEN
select 'hour errror';
SET vFLAG = -1;
END IF;
END IF;
IF (vFLAG = -1) THEN
SET sum_table_rows = -1;
ELSE
SET vDay_start = inDayStart;
SET vDay_end = inDayEnd;
SET vHour_start = inHourStart;
SET vHour_end = inHourEnd;
WHILE (vDay_start <= vDay_end) DO # the same month
#MONTH
IF (inMonth < 10) THEN
SET szMonth = CONCAT("0",inMonth);
ELSE
SET szMonth = CONCAT(inMonth);
END IF;
#DAY
IF (vDay_start < 10) THEN
SET szDay = CONCAT("0",vDay_start);
ELSE
SET szDay = CONCAT(vDay_start);
END IF;
# HOUR
IF (vHour_start < 10) THEN
SET szHour = CONCAT("0",vHour_start);
ELSE
SET szHour = CONCAT(vHour_start);
END IF;
SET v_tableName = CONCAT(inTABLEPrefix, inYear,szMonth, szDay, szHour, "0000");
SET @sql = CONCAT("SELECT SUM( TABLE_ROWS ) INTO @rowcount
FROM information_schema.`tables` WHERE TABLE_SCHEMA='", inDBName,
"' AND TABLE_NAME = '", v_tableName, "'");
PREPARE s0 FROM @sql;
EXECUTE s0;
SET sum_table_rows = sum_table_rows + @rowcount;
DEALLOCATE PREPARE s0;
###
IF (vDay_start < vDay_end) THEN
IF ( vHour_start < 23) THEN
SET vHour_start = vHour_start + 1;
ELSE
SET vHour_start = 0;
SET vDay_start = vDay_start + 1; # Day add 1
END IF;
ELSE
IF ( vHour_start < vHour_end) THEN
SET vHour_start = vHour_start + 1;
ELSE
SET vDay_start = vDay_start + 1;
END IF;
END IF;
END WHILE;
END IF;
select sum_table_rows;
END;
- 计算数据库中数据总和的存储过程
- 报表的数据总和与真实数据库表中数据总和不一致,sql语句错误
- 利用存储过程来消除数据库中冗余的数据
- sqlserver中不同服务器的数据库数据同步存储过程
- MySql中一个简单的存储过程刷数据库数据
- Orcale中一个简单的存储过程刷数据库数据
- ASP.NET数据格中计算数值总和
- ASP.NET数据格中计算数值总和DataGrid
- 存储过程调用不同数据库的数据
- 给数据库增加数据的存储过程
- 为数据库中所有表生成创建存储数据的存储过程代码
- 用awk命令计算文件中某一列的总和
- 计算文档中某一列数值的总和
- 计算给定数组 arr 中所有元素的总和
- 数据库中存储过程的自动化生成
- 数据库中存储过程的自动化生成
- 数据库中存储过程的入门
- 数据库中存储过程的自动化生成
- 初识触发器
- SQL注入漏洞全接触--入门篇
- 开发点滴
- 开心网系统架构分析
- ASP.NET生成随机密码
- 计算数据库中数据总和的存储过程
- javadoc 格式
- 第一篇处女作
- 发送飞信的Python脚本
- Svn常见问题
- textbox的textmode取为multiline时,其maxlength不起作用
- 瑞士军刀NC用法
- linux 常见问题
- 多研究一些实际的问题