需要寫一個卸數的工具,有一個SELECT MAX的操作:
1
EXEC 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 閱讀(790)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++ 、
database