随笔-15  评论-2  文章-0  trackbacks-0
需要写一个卸数的工具,有一个SELECT MAX的操作:

1EXEC SQL SELECT MAX(index) INTO :index
2         FROM table
3         WHERE x=:x AND y=:y;

目的是取出满足WHERE条件的index的最大值。但是得出的结果却是-21474836478,十六进制为0x00000080,非常奇怪。尝试了很多次还是这种结果,后来在网上找到了一篇文章(http://www.tek-tips.com/viewthread.cfm?qid=1501792&page=3),大致意思是当满足WHERE条件的条数为0时,这条语句会有问题。仔细检查才发现我其中的y值取错了,造成符合条件的记录数为0,造成以上的问题,至于index为什么会有那个值原因未知。

结论是:在使用SELECT MAX之前,需要首先确定满足WHERE条件的COUNT(*)>0,否则会造成未知错误。

PS:至于刚才网址中作者所说的空表时会报-201错我没有碰到,我在空表时和没找到记录时现象相同。
posted on 2010-02-25 23:00 RayRiver 阅读(715) 评论(0)  编辑 收藏 引用 所属分类: C/C++database

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理