mysql存储过程和存储函数
mysql存储过程和存储函数
存数函数
代码示例:DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate;
delimiter //
CREATE FUNCTION calc_ci_day_suc_rate(dt DATE, exp_version VARCHAR(64)) RETURNS FLOAT
BEGIN
DECLARE oneDayCICount INT DEFAULT 0;
DECLARE oneDaySucCICount INT DEFAULT 0;
DECLARE CISucRate FLOAT DEFAULT -1.0;
SELECT COUNT(build_id) INTO oneDayCICount FROM versions_build_info WHERE version_name = exp_version AND DATEDIFF(generate_time, dt) = 0;
IF(oneDayCICount != 0) THEN
SELECT COUNT(distinct(build_id)) INTO oneDaySucCICount FROM build_detail WHERE build_detail where result=1 and build_id in (select build_id from versions_build_info where version_name = exp_version and DATEDIFF(generate_time, dt) = 0);
SET CISucRate = oneDaySucCICount*100/oneDayCICount;
END IF
RETURN CISucRate
END
//
delimiter ;
其中的delimiter是改变mysql命令行中;结束符为//,当然,也可以改为其他的符号
存储函数创建的基本格式为:CREATE FUNCTION 函数名(参数名 类型, 参数名 类型)RETURNS 返回值类型
BEGIN
DECLARE 参数名 类型 [DEFAULT 值];
IF(表达式) THEN
SET 变量名 = 值;
ELSEIF(表达式) THEN
语句块;
ELSE
语句块;
END IF;
WHILE 表达式 DO
语句块;
END WHILE;
RETURN 参数名;
END
- CREATE FUNCTION是表示创建的是存储函数,后跟函数名和参数
- RETURNS后面跟的是返回值的类型
- 函数体是以BEGIN开始,END结束
- 函数中局部变量的声明使用DECLARE,类型就是mysql支持的类型,可以通过DEFAULT指定缺省值
- 变量的赋值通过SET进行
- IF来进行条件判断,以END IF结束
- WHILE循环以END WHILE结束
存储过程
代码示例:DROP PROCEDURE IF EXISTS cacl_all_ci_suc_rate;
delimiter //
CREATE PROCEDURE cacl_all_ci_suc_rate(IN exp_version VARCHAR(64))
BEGIN
DECLARE beginDate DATETIME DEFAULT '2015-01-01';
DECLARE caclDate DATE;
DECLARE CISucRate FLOAT DEFAULT -1.0;
DECLARE oneDayCICount INT DEFAULT 0;
DECLARE oneDayFailCICount INT DEFAULT 0;
DECLARE oneDaySucCICount INT DEFAULT 0;
SELECT MIN(generate_time) INTO beginDate FROM versions_build_info;
IF(DATEDIFF(beginDate, '2015-01-01') != 0) THEN
SET caclDate = DATE(beginDate);
WHILE DATEDIFF(CURDATE(), caclDate) > 0 DO
SELECT get_one_day_total_ci_count(caclDate, exp_version) INTO oneDayCICount;
IF(oneDayCICount != 0) THEN
SELECT get_one_day_fail_ci_count(caclDate, exp_version) INTO oneDayFailCICount;
SET oneDaySucCICount = oneDayCICount - oneDayFailCICount;
SET CISucRate = oneDaySucCICount*100/oneDayCICount;
INSERT INTO rmp_daily_build_ci(ci_date, suc_percent, build_count, suc_count) VALUES(caclDate, CISucRate, oneDayCICount, oneDaySucCICount);
END IF;
SET caclDate = ADDDATE(caclDate, 1);
END WHILE;
END IF;
END
//
delimiter ;
- CREATE PROCEDURE表示创建存储过程
- 参数可以通过IN和OUT来表示参数是输入参数还是输出参数,INOUT表示既是输入也是输出
- 没有返回值
- 其他语法与创建存数函数一样
mysql存储过程和存储函数的更多相关文章
- mysql 存储过程和存储函数
14.1.1 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristi ...
- MySQL 存储过程和存储函数学习
#一.存储过程和存储函数的创建案例 CREATE PROCEDURE myprocedure(in a int,in b int ,OUT c INT) BEGIN set c=a+b; end; c ...
- MySQL 存储过程和存储函数 的定义条件和处理程序
#三.定义条件和处理程序 #mysql 存储函数和过程可以将错误 变成我们想要的处理结果分2步骤 #1.定义错误条件 语法:DECLARE 条件名字 CONDITION for 错误编码 #2. 定义 ...
- mysql 存储过程与存储函数
第一节:存储过程和函数的引入 存储过程和函数是在数据库中定义一些SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL 语句.存储过程和函数可以避免开发人员重复的编写相同的SQL ...
- MySQL存储过程与存储函数的区别
语法定义上的区别就不说了,说一下其他的.如果有不正确的地方,还请大家指正. 1.总述存储函数和存储过程统称为存储例程(stored routine).两者的定义语法很相似,但却是不同的内容.存储函数限 ...
- MySQL数据库之存储过程与存储函数
1 引言 存储过程和存储函数类似于面向对象程序设计语言中的方法,可以简化代码,提高代码的重用性.本文主要介绍如何创建存储过程和存储函数,以及存储过程与函数的使用.修改.删除等操作. 2 存储过程与存储 ...
- Mysql数据库(八)存储过程与存储函数
一.创建存储过程与存储函数 1.创建存储过程(实现统计tb_borrow1数据表中指定图书编号的图书的借阅次数) mysql> delimiter // mysql> CREATE PRO ...
- mysql存储过程及常用函数
原文:mysql存储过程及常用函数 一.函数 1.数学函数 CEIL()进一取整 SELECT CEIL(1.2);2 FLOOR()舍一取整 SELECT FLOOR(1.9);9 MOD取余数(取 ...
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...
随机推荐
- linux输入子系统(input subsystem)之按键输入和LED控制
实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c #include <linux/module.h> #include &l ...
- Apache服务停止:信号灯超时时间已到,指定的网络名不再可用
环境说明:Apache2.4.10,Windows Server 2008 R2 问题说明: apache服务用于下载文件,但是在运行一段时间后,突然挂了. 其错误提示如下所示: [error] (7 ...
- Jquery-UI使用
=创建form对话框弹出登录 首先引入css样式和js. <link rel="stylesheet" href="<%=path%>/css/demo ...
- ELK日志系统:Filebeat使用及Kibana如何设置登录认证
根据elastic上的说法: Filebeat is a lightweight, open source shipper for log file data. As the next-generat ...
- [板子]ISAP
ISAP求最大流,敲了一发板子,无压行,教程略去.转载请随意. #include <cstdio> #include <cstring> #include <algori ...
- ECharts学习(3)--toolbox(工具栏)
1. toolbox:这是ECharts中的工具栏.内置有导出图片.数据视图.动态类型切换.数据区域缩放.重置五个工具. 2. toolbox中的属性,不包含五个工具.里面最主要的就是feature这 ...
- HTML5射击类游戏----【地球保卫战】
在线DEMO地址:打开: 游戏截图: 就不贴代码了, 因为代码太多了, 大概写一下这个游戏实现思路和一些实现: 游戏一共有三关, 每一关都有一个大Boss, Boss比较好杀,主要各种外星飞 ...
- C#-WebForm-★★★ 分页展示 ★★★
什么是"分页展示"? 分页展示就是将庞大的数据分成若干页,每页展示若干条数据,向用户展示数据 流程:客户端浏览器向服务器发送查询请求 → 服务器从数据库查询数据 → 服务器转换成代 ...
- Silverlight 后台设置 button 纯色背景
silverlight Button直接设置其background为某一颜色往往达不到效果.因为其内置模板把按钮背景弄成一个渐变画刷.所以想要纯色的背景就修改其模板. 在后台修改模板的代码如下: St ...
- Mysql两个引擎对比
Mysql两个引擎对比 MyIsam 优点: 1.支持B-Tree检索和文本全文检索 2.性能消耗方面相对较低 3.支持全表(table)锁 缺点: ...