使用mysql存储过程需要注意的
2017-07-23 11:20
639 查看
main: begin declare done int default 0; declare tid varchar(50); DECLARE cur CURSOR FOR select linkid from tmp_userservice_pool; #parse order content to get every parameter DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; #SET AUTOCOMMIT=1; delete from tmp_userservice_pool; insert into tmp_userservice_pool select * from tb_userservice_pool where status=0 limit 100; update tmp_userservice_pool set status=2; update tb_userservice_pool set status=2 where linkid in (select linkid from tmp_userservice_pool); open cur; -- 打开游标 -- 循环所有的行 REPEAT fetch cur into tid; if(!done) then call pcd_userservice_mvhisOne(tid); end if; UNTIL done END REPEAT; #commit; close cur; delete from tb_userservice_pool where linkid in (select linkid from tmp_userservice_pool); end ;
我们需要注意以下几点
1,使用declare声明变量时,要注意用变量来存储表字段时,二者的字符编码要一致。
2,mysql的字符合并不能使用“+”,而要使用concat函数。
3,使用游标时,每个游标要使用不同DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;来控制游标的结束。
上面的这句代码的意思就是说,当没有返回数据时,程序继续执行,并把done设置为1.控制游标的结束
还有出现在select XX into XXX from tablename的时候发生的,这个时候如果XX是null就会有问题.其实也可以这样解决
select isnull(xxxx,0) into aaaa from tableName
这样如果遇到null就为0了..
相关文章推荐
- mysql存储过程使用需要注意
- mysql使用过程中,为防止出现中文乱码需要注意的四个方面
- mysql写存储过程需要的注意的问题
- mysql存储过程需要注意的
- 存储过程游标注意事项——表需要使用别名,如红色字体
- 使用 Navicat 8 给 MySQL 写存储过程的几点注意
- mysql 存储过程需要使用delimiter
- asp.net 调用 mysql 分页存储过程,repeater使用mysql分页存储过程,mysql 存储过程的注意事项
- 执行存储过程需要注意的地方
- MySQL 的存储过程写法和Cursor的使用
- 在存储过程中使用系统存储过程sp_Excute的注意事项
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- 使用MySQL存储过程创建动态交叉表(3)
- mysql存储过程中使用临时表
- Mysql存储过程中游标的使用以及错误处理
- my sql 存储过程使用注意事项
- MySQL 存储过程和"Cursor"的使用方法
- 使用SQL存储过程要特别注意的问题-注意顺序读取
- MySQL 的存储过程写法和Cursor的使用
- 使用SQL存储过程要特别注意的问题-注意顺序读取