Mysql 存储过程编写说明
来源:互联网 发布:流程的优化 编辑:程序博客网 时间:2024/06/05 21:04
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。
--------------------基本语法--------------------
一.创建存储过程
create procedure sp_name()
begin
.........
end
二.调用存储过程
1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
三.删除存储过程
1.基本语法:
drop procedure sp_name//
2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.其他常用命令
1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个mysql存储过程的详细信息
五、运算符:
1.算术运算符
+ 加 SET var1=2+2; 4
- 减 SET var2=3-2; 1
* 乘 SET var3=3*2; 6
/ 除 SET var4=10/3; 3.3333
DIV 整除 SET var5=10 DIV 3; 3
% 取模 SET var6=10%3 ; 1
2.比较运算符
> 大于 1>2 False
< 小于 2<1 False
<= 小于等于 2<=2 True
>= 大于等于 3>=2 True
BETWEEN 在两值之间 5 BETWEEN 1 AND 10 True
NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
IN 在集合中 5 IN (1,2,3,4) False
NOT IN 不在集合中 5 NOT IN (1,2,3,4) True
= 等于 2=3 False
<>, != 不等于 2<>3 False
<=> 严格比较两个NULL值是否相等 NULL<=>NULL True
LIKE 简单模式匹配 "Guy Harrison" LIKE "Guy%" True
REGEXP 正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
IS NULL 为空 0 IS NULL False
IS NOT NULL 不为空 0 IS NOT NULL True
3.逻辑运算符
4.位运算符
| 或
& 与
<< 左移位
>> 右移位
~ 非(单目运算,按位取反)
注释:
mysql存储过程可使用两种风格的注释
双横杠:--
该风格一般用于单行注释
c风格:/* 注释内容 */ 一般用于多行注释
六、mysql变量的术语分类:
1.用户变量:以"@"开始,形式为"@变量名"
用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效
2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
3.会话变量:只对连接的客户端有效。
4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量
declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量
通俗理解术语之间的区别:
用户定义的变量就叫用户变量。这样理解的话,会话变量和全局变量都可以是用户定义的变量。只是他们是对当前客户端生效还是对所有客户端生效的区别了。所以,用户变量包括了会话变量和全局变量
局部变量与用户变量的区分在于两点:1.用户变量是以"@"开头的。局部变量没有这个符号。2.定义变量不同。用户变量使用set语句,局部变量使用declare语句定义 3.作用范围。局部变量只在begin-end语句块之间有效。在begin-end语句块运行完之后,局部变量就消失了。
所以,最后它们之间的层次关系是:变量包括局部变量和用户变量。用户变量包括会话变量和全局变量。
通过程序来说明一些细节:
(1) declare carnum int 或 declare carnum int default(10); 声明局部变量
(2) 局部变脸赋值,set carnum = i ;
(3) if then...elseif then... else then...end if 关键字记住
(4) 如下列代码中所示,DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 出错是设置done为1,正常情况下为0,if not done then则成立进入if中,当游标结束,done被设置为1,于是UNTIL done END REPEAT; 使得循环结束。
drop procedure if exists updateDnAlert;create procedure updateDnAlert()BEGINdeclare alertType VARCHAR(10);declare alertTypeId int;declare tableId int;DECLARE done INT DEFAULT 0; DECLARE curDnAlert CURSOR FOR SELECT id,type from webgps4.dn_alert;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; open curDnAlert;REPEATFETCH curDnAlert into tableId , alertType;if not done THENif alertType='出围栏' THENset alertTypeId = 5;elseif alertType='震动' THENset alertTypeId = 3;elseif alertType='盗警' THENset alertTypeId = 2;elseif alertType='剪线' THENset alertTypeId = 13;elseif alertType='低电压' THENset alertTypeId = 14;end if;update webgps4.dn_alert set alertId = alertTypeId where id = tableId;END if;UNTIL done END REPEAT;CLOSE curDnAlert; -- 关闭游标END;
- Mysql 存储过程编写说明
- MySQL存储过程编写
- 编写mysql存储过程
- mysql 编写存储过程实例
- mysql 存储过程编写(2)
- shell脚本编写存储过程(mysql)
- mysql编写存储过程hibernate4调用
- MySQL存储过程的编写与使用
- Atitit mysql存储过程编写指南
- 编写mysql存储过程时,最好设置SQL_MODE
- 简单的存储过程编写及MySQL中event调用
- mysql存储过程的3种参数模型详细说明
- 开始编写存储过程
- 编写存储过程
- 编写sqlserver存储过程
- Oracle编写存储过程
- 存储过程sql 编写
- oracle存储过程编写
- 个人对于SQL SERVER left join on的浅知
- Qcom从CPU的启动
- Deploy OAF page
- Nginx content cache Nginx内容缓存
- 函数表达式和函数声明/()是一个分组操作符/Module模式/匿名闭包/克隆/function的执行
- Mysql 存储过程编写说明
- 将自己的引擎嵌入cocos2d-x
- C3P0多数据源的死锁问题
- 被覆盖了的文件怎么恢复
- HDU 1.1.4 A+B for Input-Output Practice (IV)
- 仿微信5.2布局
- linux下串口的安装和使用(ubuntu+usb转串口)
- java多线程
- 数据冗余