今回は、私の会社が Oracle データベースから情報を取得するために使用しているアプリケーションの 1 つが VBScript を正常に動作させていないように見えるため、このメールをお送りします。事実は次のとおりです。
次のことを行うコードの一部があります。
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
Statement Tracer for Oracle (www.aboves.com) を使用すると、同じステートメントを対応する値でキャプチャできます。
1=1 および SLEUTEL = 1572499 の SYSADM.GBPRESTATIEGROEP から REQ_PAYMODE を選択します。
ここで、VBScript はその値を取得し、別のクエリを実行することになっています。
sSql = "SELECT PAM_CODE" & _ " FROM SYSADM.PAYMODES" & _ " WHERE 1=1" & _ " AND PAM_KEY = " & sRequestPaymodeKey Set oRSPaymodes = connADO.execute(sSql)
このコードの最後の行で、スクリプトは次のようなエラーをスローします。
ORA-00936: 行XXXに式がありません --> Set oRSPaymodes = connADO.execute(sSql) <--
これは基本的に、(3) のクエリが正しくないことを意味します。これは、何らかの理由でsRequestPaymodeKeyが空であることも意味します。この失敗した sql ステートメントはステートメント トレーサーに表示されないため、これを確実に伝えることはできませんが、それが唯一の説明です。ただし、最悪の部分は、SQLDeveloper (値sRequestPaymodeKeyの取得元) でクエリ (2) を実行すると、null またはゼロ以外の値を持つ行が表示されることです。
ここで他に何が起こっているのか考えられません。サーバーの問題かもしれません...わかりません。
皆さんからの提案はありますか?VBEファイルを実際にデバッグする方法はありますか?
あなたの助けは大歓迎です!