這次我寫了你,因爲VBScript是我公司用來從Oracle數據庫檢索信息的應用程序之一,似乎沒有正常工作。以下是事實:VBScript不能正確執行sql語句
有代碼的一部分執行以下操作:
sSql = "SELECT REQ_PAYMODE" & _ " FROM SYSADM.GBPRESTATIEGROEP" & _ " WHERE 1=1" & _ " AND SLEUTEL = " & sKeyPrestatiegroep Set oRSGBPrest = connADO.execute(sSql) If Not oRSGBPrest.EOF Then sRequestPaymodeKey = oRSGBPrest("REQ_PAYMODE") Else //error handling End If
使用爲Oracle聲明示蹤劑(www.aboves.com)我可以捕獲相同的聲明及其相應的值:
SELECT REQ_PAYMODE FROM SYSADM.GBPRESTAT IEGROEP WHERE 1 = 1 AND SLEUTEL = 1572499
現在,VBScript中應該採取的價值和執行另一個查詢:
sSql = "SELECT PAM_CODE" & _ " FROM SYSADM.PAYMODES" & _ " WHERE 1=1" & _ " AND PAM_KEY = " & sRequestPaymodeKey Set oRSPaymodes = connADO.execute(sSql)
權在這最後該腳本會拋出一個錯誤,說:
ORA-009 36:在線XXX缺少表達 - >設置oRSPaymodes = connADO.execute(sSql)< -
這基本上意味着查詢中(3)是不正確的,這也意味着由於某種原因sRequestPaymodeKey是空的。我無法確定這是因爲這個失敗的sql語句沒有出現在語句跟蹤器中,但這是我能找到的唯一解釋。但是,最差的部分是,它在SQLDeveloper上運行查詢(2)時(其值爲sRequestPaymodeKey來自),它顯示的行的值不是null或零。
我想不出在這裏可能發生的任何事情,也許它只是一個服務器的事情......不知道。
你們有什麼建議嗎?任何方式,我可以真正調試一個VBE文件?
非常感謝您的幫助!
你可以添加一些日誌記錄到你的變量的值寫入文件的VB腳本? – BG100 2010-09-03 05:59:27
是的,我已經做到了。我在第一個sql語句中放置了一個msgbox,它顯示變量sKeyPrestatiegroep具有正確的值,但它在執行時僅返回沒有行 – danboh 2010-09-03 14:31:36
某些東西在這裏沒有添加。如果oRSGBPrest沒有返回任何行,則當您分配sRequestPaymodeKey時應該會收到錯誤,因爲您試圖訪問空記錄集中的字段。 – Tmdean 2010-09-03 15:16:59