怪問題!一個存儲過程的判斷條件明明為FALSE,為何可以執行下去? ( 积分: 20 )

  • 主题发起人 fancypansy
  • 开始时间
F

fancypansy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在存儲過程中有這麽一條判斷語句IF&nbsp;(sr.BCQ04='021')&nbsp;OR&nbsp;(sr.BCQ04='031')&nbsp;OR&nbsp;(sr.BCQ04='043')&nbsp;OR&nbsp;(sr.BCQ04='051')&nbsp;OR&nbsp;(sr.BCQ04='003'&nbsp;AND&nbsp;sr.BCQ03&lt;&gt;sr.BCQ14)&nbsp;OR&nbsp;(sr.BCQ04='013'AND&nbsp;sr.BCQ03&lt;&gt;sr.BCQ14)&nbsp;THEN<br>&nbsp;SELECT&nbsp;COUNT(*)&nbsp;INTO&nbsp;l_cnt2&nbsp;FROM&nbsp;LIPS&nbsp;WHERE&nbsp;VBELN=sr.BCR18&nbsp;AND&nbsp;POSNR=sr.BCR19&nbsp;&nbsp;AND&nbsp;MANDT=l_client;<br>可是,從遊標中取得的數據是&nbsp;sr.BCQ04='087',sr.BCQ03='R1100',sr.BCQ14='CNU00101',<br>這明明就不符合判斷條件,為什麽還可以執行下面的SQL語句?<br>請大家幫忙看看問題在哪裏?謝謝!
 
怎麽沒有人看啊?<br>自己頂
 
沒有人看出問題在哪裏嗎?<br>大蝦們,請仔細看看,看問題在哪裏呀。<br>好郁悶拉!
 
如果將遊標的SQL拿到前端ADOQuery1控件裏去,<br>&nbsp;l_bcq04:=ADOQuery1.fieldbyname('BCQ04').AsString;&nbsp;&nbsp;&nbsp;//值為'087'<br>&nbsp;l_bcq03:=ADOQuery1.fieldbyname('BCQ03').AsString;&nbsp;&nbsp;&nbsp;//值為'R1100'<br>&nbsp;l_bcq14:=ADOQuery1.fieldbyname('BCQ14').AsString;&nbsp;&nbsp;&nbsp;//值為'CNU00101'<br>然後,<br>IF&nbsp;(l_bcq04='021')&nbsp;OR&nbsp;(l_bcq04='031')&nbsp;OR&nbsp;(l_bcq04='043')&nbsp;OR&nbsp;(l_bcq04='051')THEN<br>BEGIN<br>&nbsp;&nbsp;ShowMessage();<br>END;<br>這樣就不會ShowMessage.<br>但是如果放在后端遊標裏,執行<br>IF&nbsp;(sr.BCQ04='021')&nbsp;OR&nbsp;(sr.BCQ04='031')&nbsp;OR&nbsp;(sr.BCQ04='043')&nbsp;OR&nbsp;(sr.BCQ04='051')THEN&nbsp;<br>&nbsp;&nbsp;&nbsp;SELECT&nbsp;COUNT(*)&nbsp;INTO&nbsp;CNT&nbsp;FROM&nbsp;....<br>同樣會執行SQL語句。<br>到底問題出在哪裏啊?
 
我操,这个世界没有天理了~~~~~&nbsp;&nbsp;MD,老虎不发威,当我是病猫,&nbsp;先骂人的倒有理了&nbsp;我可是从来不主动得罪人的&nbsp;谁要是欺负人,那就不客气了&nbsp;&nbsp;&nbsp;明天把这个工具开个源,叫大家都来用用&nbsp;&nbsp;&nbsp;&nbsp;请问你们有什么拿的出手的?自己写的东西?&nbsp;说出来叫大爷我长长见识?&nbsp;别不会是一群耍嘴皮子的废物吧?&nbsp;需要的请关注我的&nbsp;blog&nbsp;http://hi.baidu.com/earthsearch
 
顶部