一个程序用相同的数据,在2000 和2005下跑出来的结果不一样。
涉及临时表(SELECT ...INTO #temp, ##temp2...),
然后用临时表的数据update一个表(UPDATE ...FROM #TEMP ... WHERE ....使用了RTRIM RIGHT CAST等sql函数)。
但是在2005下update显示的处理记录比2000下要多很多?
可能是什么原因呢?

解决方案 »

  1.   

    --1 临时表
    mTempTable := '#BOMB05_'+FORMATDATETIME('hhnnsszzz',now());
    mTempTable2 := '#BOMB05B_'+FORMATDATETIME('hhnnsszzz',now());
    --2 select/insert into mTempTable ,mTempTable2 ... (略)--3 UPDATE(问题出在这里↓)
    mSQL:=' UPDATE $$INVMB SET MB026=RIGHT(''00''+RTRIM(CAST(LEVEL AS Char(2))),2) '+#13+
              ' FROM '+mTempTable3+
              ' WHERE MB001=ITEM  ';
    mSQL := mSQL + ' AND MB026 <> RIGHT(''00''+RTRIM(CAST(LEVEL AS CHAR(2))),2) '
    发现:把这句' AND MB026 <> RIGHT(''00''+RTRIM(CAST(LEVEL AS CHAR(2))),2) '去掉的话,2000下,update的笔数与2005下加这句话时相同-->也就是说这句话在2005下没起作用!
    为什们?这就是问题的关键。
      

  2.   

    我用的是 delphi 5 的 ADOQUERY控件