免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6003 | 回复: 11
打印 上一主题 下一主题

sybase 多行游标更新问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-10 13:43 |只看该作者 |倒序浏览
本人使用sybase ase一年有余,近日有个问题,咨询下坛子里的高人,麻烦不吝赐教:
系统中有只程序专门负责处理每天的交易数据,查询并不快,想通过使用宽游标,也就是多行游标来减少io操作,但是本人以前没有写过宽游标的程序,对于宽游标下如何更新数据莫不着头绪,有哪位写过这方面的程序,希望能贴出段代码来给小弟学习学习,若没有代码,麻烦告知从哪里可以下到资料自己学习也行,先谢过了

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
2 [报告]
发表于 2011-02-10 16:51 |只看该作者
本帖最后由 Eisen 于 2011-02-10 17:07 编辑

提醒一点: Sybase上不推荐使用cursor,因为效率很低,所以推荐你使用临时表的方式来解决,这样效率高。

另外,如果你实在要用,可以用 set cursor rows number for cursor_name 这样子的语句来让fetch每次返回多行。

论坛徽章:
0
3 [报告]
发表于 2011-02-11 10:29 |只看该作者
谢谢eisen的回复,我现在的问题是,取出来可以是多行,但是我想把取到数组内的数据批量存回数据库(如果没有批量存回的话,使用游标定位回到多行的起点也行),因为业务逻辑较多,较复杂,使用临时表来存取数组实现难度太大,再次感谢

论坛徽章:
0
4 [报告]
发表于 2011-02-11 10:30 |只看该作者
谢谢eisen的回复,我现在的问题是,取出来可以是多行,但是我想把取到数组内的数据批量存回数据库(如果没有批量存回的话,使用游标定位回到多行的起点也行),因为业务逻辑较多,较复杂,使用临时表来存取数组实现难度太大,再次感谢

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
5 [报告]
发表于 2011-02-11 12:59 |只看该作者
感觉不现实……
fetch可以一次取多行,但指针只能指向最后一行,你怎么update回去啊?

论坛徽章:
0
6 [报告]
发表于 2011-02-12 14:58 |只看该作者
我主要就是不晓得如何更新回去,因为处理的这张表是交易流水表,在得到的多行数据中没有办法定位一条记录,但是这些流水又必须加上是否处理的标志位(业务要求),麻烦再帮忙看看是否有这方面的资料??

论坛徽章:
0
7 [报告]
发表于 2011-03-06 17:41 |只看该作者
自己顶起来,期望高人指条明路

论坛徽章:
0
8 [报告]
发表于 2011-03-08 21:14 |只看该作者
是否可以取出要更新行的key值, 存到一个字串变量keylist, 然后 更新key值 in keylist,fecth 一次 1个update 。  仅供参考, 说错莫怪。

论坛徽章:
0
9 [报告]
发表于 2011-03-09 08:51 |只看该作者
cursor就是慢,还有锁定,甚至完整性问题。总之就是能不用就不用。。。。
什么逻辑?除了cursor无解?看到都提到多行更新了。。。

论坛徽章:
0
10 [报告]
发表于 2011-03-19 09:12 |只看该作者
前几日工作任务比较重,没有时间上来回复了。
其实逻辑是这样的:
   有一只批量程序会读取当天的交易流水信息,并且将交易流水信息加工用于更新另外两张业务表,在处理完一条流水信息后,会将本条流水的是否处理标志更新(主要是为了支持重提批量,下次提起批量的时候,可以只取那些没有做过更新的流水),因为是流水表,所以并没有主键。
  此程序现阶段处理时间较慢,想优化之,初步想法是使用多行游标提取数据,但是因为游标指针只能指到最后一行,因此无法进行批量更新标志位(宽游标内的)的操作。
ps:谢谢楼上两位的回复。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP