记一次MySQL存储过程和游标的使用


需求: 有三张表:Player、Consumption、Consumption_other。Player表中记录用户信息(playerid、origin等字段),Consumption和Consumption_other记录用户的消费信息。现需要根据Player表中的origin字段,分别向Consumption和Consumption_other表中插入一条消费记录。规定:Player表中origin=0的,将信息插入到Consumption表中;Player表中origin不为0的,将信息插入到Consumption_other表中。
方法: 使用MySQL的存储过程和游标实现:
存储过程相关:1、创建存储过程:
格式: 例子: 解析:delimiter是分割符的意思。因为MySQL默认以“;”为分割符,如果没有声明分割符,那么编译器会把存储过程当作SQL语句进行处理,则存储过程的编译过程会报错。“delimiter //”声明分割符是“//”。存储过程中的代码结束之后,再次声明“delimiter ;”,将“;”作为分割符。创建的存储过程可能会有输入、输出、输入输出参数。本例有一个输入参数“ori”,类型是int,一个输出参数“total”,类型是int。如果有多个参数,用“,”分割开。过程体的开始、结束使用BEGIN和END进行标识。MySQL称存储过程的执行为调用,因此执行存储过程的语句是CALL。CALL接收存储过程的名字以及需要传递给它的任何参数。
2、参数: 存储过程共有三种参数类型,INT、OUT、INOUT。形式如:CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形…])IN输入参数:该参数的值必须在调用存储过程时指定。如果在存储过程中修改了该参数的值,该参数的值仍然是修改之前的值。OUT输出参数:指定MySQL变量,接收调用存储过程后返回的值。INOUT输入输出参数:调用时指定,并且可被改变和返开发云主机域名回。
3、变量:定义存储过程局部变量: datatype与MySQL的数据类型一样,如:int、float、date、varchar(length);MySQL变量:MySQL变量一般以@开头;变量赋值:
4、查询存储过程:
5、删除存储过程:

游标相关:1、创建游标: 解析:MySQL游标仅用于存储过程中;DECLARE语句用来定义和命名游标,这里的游标为“cur”;OPEN和CLOSE用来打开和关闭游标。在处理OPEN语句时执行查询,存储检索出的数据以供浏览。CLOSE游标将释放游标占用的所有内存和内部资源。如果没有明确关闭游标,MySQL会在到达END语句时自动关闭游标;在一个游标被打开后,使用FETCH语句可以访问游标的每一行,并可以指定将数据存储在什么地方。上面例子中,FETCH语句在REPEAT内,因此它反复执行,直到done为真(由UTIL done END REPEAT;指定);CONTINUE HANDLER,当REPEAT由于没有更多的行供循环而不能继续时出现这个条件,将done设置为1,此时REPEAT终止。
2、DECLARE语句的次序: DECLARE语句的发布存在特定的次序。用DECLARE语句定义的局部变量必须在定义任意游标或句柄之前;句柄的定义必须在游标之后。
3、重复或循环: 除了在1、创建游标中使用的REPEAT外,MySQL还支持循环语句,用来重复执行代码,直到使用LEAVE语句手动退出为止。如下:

相关推荐: 普通数据文件导入mysql出现问题如何处理

下文内容主要给大家带来普通数据文件导入mysql出现问题如何处理,这里所讲到的知识,与书籍略有不同,都是开发云专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值开发云主机域名,希望给广大读者带来帮助。一、问题描述数据文件 a.txt 导入mys…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/07 16:17
下一篇 06/07 16:18

相关推荐