MySQL 创建存储过程Word下载.docx
- 文档编号:22573481
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:21
- 大小:19.98KB
MySQL 创建存储过程Word下载.docx
《MySQL 创建存储过程Word下载.docx》由会员分享,可在线阅读,更多相关《MySQL 创建存储过程Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
习惯上,对于是“in”的参数,我们都不会显式指定。
1.MySQL存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”
2.MySQL存储过程参数,不能在参数名称前加“@”,如:
“@aint”。
下面的创建存
储过程语法在MySQL中是错误的(在SQLServer中是正确的)。
MySQL存储过程中
的变量,不需要在变量名字前加“@”,虽然MySQL客户端用户变量要加个“@”。
@aint,-错误
bint
-正确
3.MySQL存储过程的参数不能指定默认值。
4.MySQL存储过程不需要在procedurebody前面加“as”。
而SQLServer存储过
程必须加“as”关键字。
as
-错误,MySQL不需要“as”
mysqlstatement...;
5.如果MySQL存储过程中包含多条MySQL语句,则需要beginend关键字。
mysqlstatement1...;
mysqlstatement2...;
6.MySQL存储过程中的每条语句的末尾,都要加上分号“;
”
...
7.MySQL存储过程中的注释。
这是个
多行MySQL注释。
-这是单行MySQL注释(注意-后至少要有一个空格)
ifaisnullthen这也是个单行MySQL注释
8.不能在MySQL存储过程中使用“return”关键字。
9.调用MySQL存储过程时候,需要在过程名字后面加“()”,即使没有一个参数,也
需要“()”
callpr_no_param();
10.因为MySQL存储过程参数没有默认值,所以在调用MySQL存储过程时候,不能省
略参数。
可以用null来替代。
callpr_add(10,null);
mysql5.0存储过程学习总结
一.创建存储过程
1.基本语法:
createproceduresp_name()
………
end
2.参数传递
二.调用存储过程
callsp_name()
注意:
存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
三.删除存储过程
dropproceduresp_name//
2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.区块,条件,循环
1.区块定义,常用
……
也可以给区块起别名,如:
lable:
………..
endlable;
可以用leavelable;
跳出区块,执行区块以后的代码
2.条件语句
if条件then
statement
else
endif;
3.循环语句
(1).while循环
[label:
]WHILEexpressionDO
statements
ENDWHILE[label];
(2).loop循环
]LOOP
ENDLOOP[label];
(3).repeatuntil循环
]REPEAT
UNTILexpression
ENDREPEAT[label];
五.其他常用命令
1.showprocedurestatus
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时
间等
2.showcreateproceduresp_name
显示某一个存储过程的详细信息
mysql存储过程中要用到的运算符
mysql存储过程学习总结-操作符
算术运算符
+
加
SETvar1=2+2;
4
-
减
SETvar2=3-2;
1
*
乘
SETvar3=3*2;
6
/
除
SETvar4=10/3;
3.3333
DIV
整除SETvar5=10DIV3;
3
%
取模SETvar6=10%3;
比较运算符
>
大于1>
2False
<
小于2<
1False
=
小于等于2<
=2True
大于等于3>
BETWEEN
在两值之间5BETWEEN1AND10True
NOTBETWEEN
不在两值之间5NOTBETWEEN1AND10False
IN
在集合中5IN(1,2,3,4)False
NOTIN
不在集合中5NOTIN(1,2,3,4)True
等于2=3False
!
不等于2<
3False
=>
严格比较两个NULL值是否相等NULL<
NULLTrue
LIKE
简单模式匹配"
GuyHarrison"
LIKE"
Guy%"
True
REGEXP
正则式匹配"
REGEXP"
[Gg]reg"
False
ISNULL
为空0ISNULLFalse
ISNOTNULL
不为空0ISNOTNULLTrue
逻辑运算符
与(AND)
AND
TRUE
FALSE
NULL
或(OR)
OR
异或(XOR)
XOR
位运算符
|
位或
&
位与
左移位
右移位
~
位非(单目运算,按位取反)
mysq存储过程中常用的函数,字符串类型操作,数学类,日期时间类。
mysql存储过程基本函数
一.字符串类
CHARSET(str)//返回字串字符集
CONCAT(string2
[,...])//连接字串
INSTR(string,substring)//返回substring首次在string中出现的位置,不存在返
回0
LCASE(string2)//转换成小写
LEFT(string2,length)//从string2中的左边起取length个字符
LENGTH(string)//string长度
LOAD_FILE(file_name)//从文件读取内容
LOCATE(substring,string
[,start_position])同INSTR,但可指定开始位置
LPAD(string2,length,pad)//重复用pad加在string开头,直到字串长度为length
LTRIM(string2)//去除前端空格
REPEAT(string2,count)//重复count次
REPLACE(str,search_str,replace_str)//在str中用replace_str替换search_str
RPAD(string2,length,pad)//在str后用pad补充,直到长度为length
RTRIM(string2)//去除后端空格
STRCMP(string1,string2)//逐字符比较两字串大小,
SUBSTRING(str,position
[,length])//从str的position开始,取length个字符,
注:
mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1
mysql>
selectsubstring(’abcd’,0,2);
+———————–+
|substring(’abcd’,0,2)|
|
1rowinset(0.00sec)
selectsubstring(’abcd’,1,2);
|substring(’abcd’,1,2)|
|ab
1rowinset(0.02sec)
TRIM([[BOTH|LEADING|TRAILING][padding]FROM]string2)//去除指定位置的指定字
符
UCASE(string2)//转换成大写
RIGHT(string2,length)//取string2最后length个字符
SPACE(count)//生成count个空格
二.数学类
ABS(number2)//绝对值
BIN(decimal_number)//十进制转二进制
CEILING(number2)//向上取整
CONV(number2,from_base,to_base)//进制转换
FLOOR(number2)//向下取整
FORMAT(number,decimal_places)//保留小数位数
HEX(DecimalNumber)//转十六进制
HEX()中可传入字符串,则返回其ASC-11码,如HEX(’DEF’)返回4142143
也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19
LEAST(number,number2
[,..])//求最小值
MOD(numerator,denominator)//求余
POWER(number,power)//求指数
RAND([seed])//随机数
ROUND(number
[,decimals])//四舍五入,decimals为小数位数]
返回类型并非均为整数,如:
(1)默认变为整形值
selectround(1.23);
+————-+
|round(1.23)|
1|
selectround(1.56);
|round(1.56)|
2|
(2)可以设定小数位数,返回浮点型数据
selectround(1.567,2);
+—————-+
|round(1.567,2)|
1.57|
SIGN(number2)//返回符号,正负或0
SQRT(number2)//开平方
三.日期时间类
ADDTIME(date2,time_interval)//将time_interval加到date2
CONVERT_TZ(datetime2,fromTZ,toTZ)//转换时区
CURRENT_DATE(
)//当前日期
CURRENT_TIME(
)//当前时间
CURRENT_TIMESTAMP(
)//当前时间戳
DATE(datetime)//返回datetime的日期部分
DATE_ADD(date2,INTERVALd_valued_type)//在date2中加上日期或时间
DATE_FORMAT(datetime,FormatCodes)//使用formatcodes格式显示datetime
DATE_SUB(date2,INTERVALd_valued_type)//在date2上减去一个时间
DATEDIFF(date1,date2)//两个日期差
DAY(date)//返回日期的天
DAYNAME(date)//英文星期
DAYOFWEEK(date)//星期(1-7),1为星期天
DAYOFYEAR(date)//一年中的第几天
EXTRACT(interval_name
FROMdate)//从date中提取日期的指定部分
MAKEDATE(year,day)//给出年及年中的第几天,生成日期串
MAKETIME(hour,minute,second)//生成时间串
MONTHNAME(date)//英文月份名
NOW(
SEC_TO_TIME(seconds)//秒数转成时间
STR_TO_DATE(string,format)//字串转成时间,以format格式显示
TIMEDIFF(datetime1,datetime2)//两个时间差
TIME_TO_SEC(time)//时间转秒数]
WEEK(date_time[,start_of_week])//第几周
YEAR(datetime)//年份
DAYOFMONTH(datetime)//月的第几天
HOUR(datetime)//小时
LAST_DAY(date)//date的月的最后日期
MICROSECOND(datetime)//微秒
MONTH(datetime)//月
MINUTE(datetime)//分
附:
可用在INTERVAL中的类型
DAY,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR,HOUR_MINUTE,HOUR_SECOND
MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
viewplaincopytoclipboardprint?
dropprocedureifexistspro_rep_shadow_rs;
delimiter|
----------------------------------
--rep_shadow_rs
--用来处理信息的增加,更新和删除
--每次只更新上次以来没有做过的数据
--根据不同的标志位
--需要一个输出的参数,
--如果返回为0,则调用失败,事务回滚
--如果返回为1,调用成功,事务提交
--
--测试方法
--callpro_rep_shadow_rs(@rtn);
--select@rtn;
createprocedurepro_rep_shadow_rs(outrtnint)
begin
--声明变量,所有的声明必须在非声明的语句前面
declareiLast_rep_sync_idintdefault-1;
declareiMax_rep_sync_idintdefault-1;
--如果出现异常,或自动处理并rollback,但不再通知调用方了
--如果希望应用获得异常,需要将下面这一句,以及启动事务和提交事务的语句
全部去掉
declareexithandlerforsqlexceptionrollback;
--查找上一次的
selecteidintoiLast_rep_sync_idfromrep_de_proc_logwhere
tbl='
rep_shadow_rs'
;
--如果不存在,则增加一行
ifiLast_rep_sync_id=-1then
insertintorep_de_proc_log(rid,eid,tbl)values(0,0,'
);
setiLast_rep_sync_id=0;
--下一个数字
setiLast_rep_sync_id=iLast_rep_sync_id+1;
--设置默认的返回值为0:
失败
setrtn=0;
--启动事务
starttransaction;
--查找最大编号
selectmax(rep_sync_id)intoiMax_rep_sync_idfromrep_shadow_rs;
--有新数据
ifiMax_rep_sync_id>
=iLast_rep_sync_idthen
--调用
callpro_rep_shadow_rs_do(iLast_rep_sync_id,iMax_rep_sync_id);
--更新日志
updaterep_de_proc_logset
rid=iLast_rep_sync_id,eid=iMax_rep_sync_idwheretbl='
--运行没有异常,提交事务
commit;
--设置返回值为1
setrtn=1;
delimiter;
dropprocedureifexistspro_rep_shadow_rs_do;
---------------------------------
--处理指定编号范围内的数据
--需要输入2个参数
--last_rep_sync_id是编号的最小值
--max_rep_sync_id是编号的最大值
--无返回值
createprocedurepro_rep_shadow_rs_do(last_rep_sync_idint,max_rep_sync_id
int)
declareiRep_operationtypevarchar
(1);
declareiRep_statusvarchar
(1);
declareiRep_Sync_idint;
declareiIdint;
--这个用于处理游标到达最后一行的情况
declarestopintdefault0;
--声明游标
declarecurcursorforselect
id,Rep
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 创建存储过程 创建 存储 过程