初试mysql存储过程&触发器
玩mysql以来,一直没有试过实现存储过程,因为存储过程的语法看起来有些笨重。所以一直采用手动批量运行查询,而且要手动改日期之类的参数。
今天尝试着学了一会,发现其实是很简单的。语法上确实格式复杂些,但是实现起来有章可循。于是花了一个小时就把最近一个小项目的批量sql改成了存储过程。
先作简要笔记,记录最基础的语法。
存储过程的基本格式
CREATE PROCEDURE icarus_daily(in pmonth VARCHAR(6),in cmonth VARCHAR(6))
BEGIN
# 运用MYSQL的日期函数作了一些日期计算
DECLARE pm2 VARCHAR(7);
DECLARE cm2 VARCHAR(7);
SET cm2 = substr(CURRENT_DATE(),1,7);
SET t_day = substr(CURRENT_DATE(),9,2) + 1;
SET pm2 = substr(DATE_SUB(CURRENT_DATE(),INTERVAL t_day DAY),1,7);
#... 中间省略若干行
# 对表格的处理,爱用replace替代insert
replace into icarus_gsm_onlist select * from icarus_gsm_remain where dmonth like cm;
replace into icarus_td_onlist select * from icarus_td_remain where dmonth like cm;
replace into icarus_lte_onlist select * from icarus_lte_remain where dmonth like cm;
replace into icarus_gsm_onlist select * from icarus_gsm_newlist where dmonth like cm;
replace into icarus_td_onlist select * from icarus_td_newlist where dmonth like cm;
replace into icarus_lte_onlist select * from icarus_lte_newlist where dmonth like cm;
# 用于观察处理结果
select
(select count(*) from icarus_gsm_newlist) as GSM,
(select count(*) from icarus_td_newlist) as TD,
(select count(*) from icarus_lte_newlist) as LTE;
# 建立一个eventlog表保存运行记录
replace into icarus_eventlog select "p_incarus_daily",now();
END
利用触发器调用存储过程
很简单,不详述。
唯一的问题是,本来存储过程通过参数传递本月和上月日期的,但是不知道怎么在触发器调用时自动获取当前月份。所以只好让存储过程自己默认判断当前时间信息了。
Mysql触发器的设置
- Mysql的触发器功能默认是关闭的,需要人工开启
# 查看触发器是否开启
SHOW VARIABLES LIKE "%event_scheduler%";
# 开启定时器
SET GLOBAL event_scheduler = ON;
- mysql启动文件配置:在mysql安装的文件夹下找到配置文件my.ini,在[mysqld]的下面加上一句:event_scheduler=ON。这样mysql在启动的时候event sheduler就会自动启动了。
初试mysql存储过程&触发器的更多相关文章
- mysql存储过程和触发器的应用
***********[mysql 存储过程和触发器 -- 别安驹]********************* 1.什么情况下使用存储过程? 完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空 ...
- mysql 存储过程 函数 触发器
mysql存储过程与函数 存储过程下载 demo mysql> delimiter // -- 这里//为修改默认分隔符: mysql> CREATE PROCEDURE simplep ...
- MySQL存储过程、触发器、自定义函数、事务
1.存储过程 MySQL中存储过程的参数中有IN.OUT.INOUT类型,但是函数的参数只能是IN类型的. “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参 ...
- mysql存储过程、函数、触发器、
当数据库版本不允许直接使用存储过程.函数的语法时用delimiter // 将结束符改成//用完之后再写delimiter;将结束符改回来即可,调用过程.函数用call+其名字即可返回结果 delim ...
- mysql 视图 触发器 存储过程 函数事务 索引
mysql 视图 触发器 存储过程 函数事务 索引 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当 ...
- 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器
@ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- MySQL存储过程调试工具-dbForge Studio for MySQL
工具官网地址:http://www.devart.com/dbforge/mysql/studio/ 对于某些存储过程很多且复杂的SQL的应用,在短时间内要使得所有MySQL存储过程和函数正常运行,那 ...
- 《MySQL 存储过程编程》-读书笔记
本书结构: 第一部分:存储编程基础 第1章:存储过程程序基础 第2章:MySQL存储编程指南 第3章:语言基础 第4章:语句块 第5章:在存储程序中使用SQL 第一章:MySQL存储程序介绍 存储程序 ...
随机推荐
- [Practical Git] Clean up commits with git rebase
Sometimes its nice to clean up commits before merging them into your main code repo; in this lesson, ...
- unity3d NGUI多场景共用界面制作
1创建单独编辑UI的unity场景 UIScene.unity 用来做UI面界 ,创建Resources文件存放UI界面的prefab,代码里动态load资源仅仅能从Resources目录载入 2创建 ...
- Lazy Load 图片延迟加载(转)
jQuery Lazy Load 图片延迟加载来源 基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载. 对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度. ...
- UNIX标准化及实现之标准之间的冲突
就整体而言,这些不同的标准之间配合得相当好.但是我们也很关注它们之间的差别,特别是ISO C标准和POSIX.1之间的差别. ISO C定义了函数clock,它返回进程使用的CPU时间,返回值类型是c ...
- [置顶] 博客已迁移至ryantang.me
大家好,感谢大家一直以来的支持,本博客内容已停止更新,新内容将发布到我的新博客,地址是:ryantang.me,欢迎大家继续支持,我会在ryantang.me上发布内容更丰富的文章内容,谢谢! Rya ...
- Java基础知识强化之网络编程笔记15:Android网络通信之 Android异步任务处理(AsyncTask使用)
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的 ...
- Java设计模式09:单例模式的强化(控制实例个数n)
1. 单例模式的本质: 控制实例数目(目的节约资源) 2. 单例模式体现的一些思想: (1)延迟装载(Lazy Load):懒汉式 (2)缓存:饿汉式 3. 单例模式的变形使用: 控制使用实例个数为3 ...
- Android(java)学习笔记132:ListViewProject案例(ListView + ArrayAdapter)
1.首先是MainActivity.java文件,如下: package com.himi.lv1; import java.util.ArrayList; import java.util.List ...
- [转]div里table居中的问题 Div与body顶部间隙
本文转自:http://www.cnblogs.com/jinhui/archive/2008/09/24/1297729.html 将div的text-align设为center,然后将table的 ...
- [转]oracle odp.net 32位/64位版本的问题
本文转自:http://www.cnblogs.com/yjmyzz/archive/2011/04/19/2020793.html 如果你的机器上安装了odp.net,且确信machine.conf ...