免费注册 查看新帖 |

Chinaunix

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

关于动态游标问题,急急急急 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-11 20:47 |只看该作者 |倒序浏览
我使用INFORMIX数据库,在同一个程序中,需要使用两次动态游标,方法如下
EXEC SQL PREPARE sqlStmt  FROM a语句;
EXEC SQL DECLARE a_cur CURSOR FOR sqlStmt;
中间是操作;
EXEC SQL CLOSE a_cur;
EXEC SQL FREE a_cur;

EXEC SQL PREPARE sqlStmt FROM b语句;
EXEC SQL DECLARE b_cur CURSOR FOR sqlStmt;
中间是操作;
EXEC SQL CLOSE b_cur;
EXEC SQL FREE b_cur;

单独分开没有问题,但是这个程序一起执行,我的ec程序core 了,
感觉是动态游标的问题,
请高手指点一下,是不是要释放动态游标?
语句如何写呀?万分感谢

论坛徽章:
0
2 [报告]
发表于 2007-01-11 23:32 |只看该作者
为什么不检查一下core的堆栈轨迹呢?   我觉得应该是你程序其他的问题。

论坛徽章:
0
3 [报告]
发表于 2007-01-12 11:22 |只看该作者
我用dbx 跟踪,如下
malloc_y(??, ??) at 0x9000000000480d8
malloc(??) at 0x900000000037844
iqdynam._iqprepare() at 0x10010b12c
iqdynam.sqli_prep() at 0x10010bd0c
我觉得是一个没有释放的问题

论坛徽章:
0
4 [报告]
发表于 2007-01-12 18:11 |只看该作者
原帖由 fengdana 于 2007-1-11 20:47 发表
我使用INFORMIX数据库,在同一个程序中,需要使用两次动态游标,方法如下
EXEC SQL PREPARE sqlStmt  FROM a语句;
EXEC SQL DECLARE a_cur CURSOR FOR sqlStmt;
中间是操作;
EXEC SQL CLOSE a_cur;
EXEC SQL ...



首先你的游标已经close,并且free,你要说的是prepare的id是否要释放,对吧。如果你现在修改程序,加入两行,释放相应的id,看看这次的运行情况。
在我的印象里面不释放id是没有关系的。我倒是觉得很有可能你程序里面有溢出,导致了malloc空间中内部信息字段被冲毁导致。不妨试试看再说。

论坛徽章:
0
5 [报告]
发表于 2007-01-13 19:43 |只看该作者
sqlStmt这个要free一下

论坛徽章:
0
6 [报告]
发表于 2007-01-13 22:26 |只看该作者
thx, 经过实践的东西,我相信:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP