取游标问题,报 243错误

老虎泰格 2009-07-15 11:24:46
FETCH CURSOR ERR==>SQLCODE = [-243]

ISAM==>sqlca.sqlerrd[2]=[0]
sqlca.sqlerrd[3]=[1]
sqlca.sqlerrd[6]=[538976288]


在Fetch cursor的时候报的一个错误,请达人帮忙分析错误原因,感激!!
...全文
933 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老虎泰格 2012-03-19
  • 打赏
  • 举报
回复
顶上去,求达人。。。
老虎泰格 2012-03-16
  • 打赏
  • 举报
回复
我想通过游标内使用for update的方式,锁定某条记录,以实现某条记录的查询、更新操作。

难道是游标内使用了for update是默认锁表,而非锁定某条记录?
  • 打赏
  • 举报
回复
finderr 243

看看错误信息
mosaic 2009-07-20
  • 打赏
  • 举报
回复
DIRTY READ也不能随便设,要看应用情况来定,比如说只是查询,那可能关系不大。 如果涉及到和其他的数据一致性,那估计就不能用了。

楼主还是要分析是否应用的设计存在缺陷导致锁表,把根本原因找到才行。
bbgg 2009-07-16
  • 打赏
  • 举报
回复
看看下面这段解释。就明白了。
.................
-243

__________________________________________________________

Could not position within a table table-name.

The database server cannot set the file position to a particular row within the file that represents a table. Check the accompanying ISAM error code for more information. A hardware error might have occurred, or the file might have been corrupted (truncated). Unless the ISAM error code or an operating-system message points to another cause, run the bcheck or secheck utility to verify file integrity.





rabbitjump 2009-07-16
  • 打赏
  • 举报
回复
243错误一般是表锁、文件锁、数据库空间不够造成的。数据库空间不够使用onstat –d看一下就可以确定,一般情况下都是表锁造成的。

对于243/-111错误,是因为在访问表中的记录行时遇到表被锁住或所查询的数据记录被更改(记录行锁),而默认遇到锁是不等待,这种情况下因无法保持数据一致性所以返回错误。

在这种情况下,如果我们只是查询表,并且也不是很关心所查询的记录是否正被更改,我们可以通过设置“隔离级别”来解决并发程序锁数据的处理情况。

“隔离级别”, 将程序与其它程序的并发操作隔离的等级。数据库服务器提供隔离级别选项,以反映程序读取数据时如何使用锁定的一组不同规则。

当碰到243/-111错误时,我们可以执行:SET ISOLATION TO DIRTY READ

这是最简单的隔离级别Dirty Read 实际上相当于没有隔离。当程序访问或存储行记录时,它不设置任何锁定,也不考虑任何东西;它只是从数据库复制行而不考虑其它程序在做什么。

你的程序处理完后,请恢复默认的隔离级别:Repeatable Read
jarod_xu 2009-07-15
  • 打赏
  • 举报
回复
可能是锁表吧
老虎泰格 2009-07-15
  • 打赏
  • 举报
回复
顶下,盼高手

1,194

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 Informix
社区管理员
  • Informix社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧