mysql中游标遍历与mybatis事务回滚滚处理问题,求助

MySQL游标 -
- ITeye技术网站
博客分类:
开始支持存储过程和
,给我们喜欢用
的朋友们更喜欢
的理由了,语法
有差别,不过搞过编程的人都知道,语法不是问题,关键是思想,大致了解语法后,就从
那么顺手,不过使用上大致上还是一样。
的操作而已,和
没有什么区别吧,不过光是了解到这个是根本不足以
过程的,还要了解其他的更深入的知识,我们才能真正的写出好的游标使用的
离不开循环语句,那么先了解一下循环吧。
觉得比较清楚,而且代码简单。
的指针有个隐性变
是通过一个
的声明来进行判断的,
里当游标遍历溢出时,会出现一个预定义的
,我们处理这个
就可以叻,关于
为结束循环的判断就可以叻。
来划分一个
里定义的变量范围也在这个
里,所以关于嵌套的游标循环我们可以多加一
来区分他们所对应的
只能定义一次
的过程中会提示里
里定义这个里面游标的
现在还不支持动态游
的在游标里还不能做到,不过这完全不影响我对
迷么,正如接天莲叶无穷碧,映日荷花别样红。
的功能,通过这个功能可有多少弥补一
DROP PROCEDURE IF EXISTS `INITBNSTRENDS`;
CREATE DEFINER = `huisou`@`%` PROCEDURE `INITBNSTRENDS`()
DECLARE fetchSeqOk BOOLEAN;
DECLARE _COM_ID INT;
DECLARE _COM_ID_CURSOR CURSOR FOR SELECT id FROM e_enterprise WHERE user_id IS NOT NULL AND status&&'-3';#企业游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetchSeqOk =#结束标识
SET fetchSeqOk = FALSE;
OPEN _COM_ID_CURSOR;
_COM_ID_CURSOR:LOOP
IF fetchSeqOk THEN
LEAVE _COM_ID_CURSOR;
FETCH _COM_ID_CURSOR INTO _COM_ID;#把企业ID值覆给_COM_ID
DECLARE _INFO_ID INT;
DECLARE _INFO_SHORTSUBJECT VARCHAR(255);
DECLARE _INFO_IMGPATH VARCHAR(128);
DECLARE _INFO_ISSUEDATE DATETIME;
DECLARE fetchSeqOk BOOLEAN DEFAULT 'inner';
DECLARE _INFO_CURSOR CURSOR FOR SELECT id,shortsubject,micropic,issuedate FROM hc_info WHERE issue_id=_COM_ID AND issuedate&'' AND status&&'-3';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetchSeqOk =#结束标识
SET fetchSeqOk = FALSE;
OPEN _INFO_CURSOR;
_INFO_CURSOR:LOOP
FETCH _INFO_CURSOR INTO _INFO_ID,_INFO_SHORTSUBJECT,_INFO_IMGPATH,_INFO_ISSUEDATE;
IF fetchSeqOk THEN
LEAVE _INFO_CURSOR;
INSERT INTO bns_trends(OBJECT_ID,OBJECT_TYPE,SUMMARY,IMG_PATH,COM_ID,VOTE_NUM,COMMEND_NUM,COMMENT_NUM,CREATE_TIME,STATUS)
VALUES(_INFO_ID,'3',_INFO_SHORTSUBJECT,_INFO_IMGPATH,_COM_ID,0,0,0,_INFO_ISSUEDATE,'1');
DECLARE _SALE_ID INT;
DECLARE _SALE_TITLE VARCHAR(255);
DECLARE _SALE_IMGPATH VARCHAR(128);
DECLARE _SALE_ISSUEDATE DATETIME;
DECLARE fetchSeqOk BOOLEAN DEFAULT 'inner';
DECLARE _SALE_CURSOR CURSOR FOR SELECT id,title,picurl,issuedate FROM e_product_sale WHERE e_id=_COM_ID AND issuedate&'' AND status&&'-3';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetchSeqOk =#结束标识
SET fetchSeqOk = FALSE;
OPEN _SALE_CURSOR;
_SALE_CURSOR:LOOP
FETCH _SALE_CURSOR INTO _SALE_ID,_SALE_TITLE,_SALE_IMGPATH,_SALE_ISSUEDATE;
IF fetchSeqOk THEN
LEAVE _SALE_CURSOR;
INSERT INTO bns_trends(OBJECT_ID,OBJECT_TYPE,SUMMARY,IMG_PATH,COM_ID,VOTE_NUM,COMMEND_NUM,COMMENT_NUM,CREATE_TIME,STATUS)
VALUES(_SALE_ID,'1',_SALE_TITLE,_SALE_IMGPATH,_COM_ID,0,0,0,_SALE_ISSUEDATE,'1');
DECLARE _BUY_ID INT;
DECLARE _BUY_TITLE VARCHAR(255);
DECLARE _BUY_IMGPATH VARCHAR(128);
DECLARE _BUY_ISSUEDATE DATETIME;
DECLARE fetchSeqOk BOOLEAN DEFAULT 'inner';
DECLARE _BUY_CURSOR CURSOR FOR SELECT id,title,picurl,issuedate FROM e_product_buy WHERE e_id=_COM_ID AND status&&'-3';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetchSeqOk =#结束标识
SET fetchSeqOk = FALSE;
OPEN _BUY_CURSOR;
_BUY_CURSOR:LOOP
FETCH _BUY_CURSOR INTO _BUY_ID,_BUY_TITLE,_BUY_IMGPATH,_BUY_ISSUEDATE;
IF fetchSeqOk THEN
LEAVE _BUY_CURSOR;
INSERT INTO bns_trends(OBJECT_ID,OBJECT_TYPE,SUMMARY,IMG_PATH,COM_ID,VOTE_NUM,COMMEND_NUM,COMMENT_NUM,CREATE_TIME,STATUS)
VALUES(_BUY_ID,'1',_BUY_TITLE,_BUY_IMGPATH,_COM_ID,0,0,0,_BUY_ISSUEDATE,'1');
浏览 12076
浏览: 297149 次
来自: 杭州
很强,对于我这个新手很容易理解,准们登录来给你点赞的!
请教一个问题。现在互联网业务的数据库通常用分片方式来连接一组数 ...mysql中游标遍历与事务回滚处理问题,求助_mysql吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:36,976贴子:
mysql中游标遍历与事务回滚处理问题,求助收藏
游标遍历有查询,更新,插入等操作,如果当中有执行失败或报错,就进行事务回滚,关闭游标,撤销之前遍历中的操作。我想问一下这一步如何取做,我是用REPEAT做循环,FETCH遍历游标,这里“DECLARE CONTINUE HANDLER FOR SQLSTATE *02000* SET _done = 1;”这句话作游标异常特殊处理的,但是游标遍历中我的其它操作也有可能会产生这个error,会有所冲突。不好意思,叨扰你的时间。如果你方便的话,请抽点时间回复我,万分感谢。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或在JSP中,如何利用游标遍历SqlServer数据库的数据?
这是我服务器端的代码:Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(&select * from test & ); StringBuffer result = new StringBuffer(&{&); while(rs.next()){ id=rs.getString(&id&); name=rs.getString(&name&);result.append(&'id':'& + id + &'& ); result.append(&,'name':'& + name+ &'&);
} result.append(&}&);out.println(result.toString());当前的主要问题是:在运行完代码之后,一下子就将数据库中所有的记录输出了。怎样控制输出的时候,一条一条的输出。也就是说,输出第一条之后,再输出第二条,以此类推。谢谢了!!
09-07-30 &}

我要回帖

更多关于 spring事务回滚 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信