首页 > 解决方案 > “SQL 数据类型超出范围”如果不是 rs.EOF THEN

问题描述

IF NOT rs.EOF THEN我的脚本中的语句有问题。错误提示“[ORACLE][ODBC] SQL 数据类型超出范围 <-27>。

我想执行以下可以正常工作几年的查询。我认为该错误是在将 Oracle 数据库更新到 19c 版本后发生的。但我不太确定。

qry_pkv = "SELECT DISTINCT MANDT, PATH301 FROM NC301B " &_
          "WHERE (EDIPROC like 'P30_')" &_
          "AND (LF301M > 0) " & _
          "AND (MANDT = "& mdt &")" &_
          "AND (PATH301 LIKE '%\PKV_DAV\%') " &_
          "OR (PATH301 LIKE '%\pkv_dav\%') " &_
          "ORDER BY MANDT ASC; "

cn.Open connectionString                                                                                                ' Verbindung zum SQL Server wird hergestellt

    If Err.Number <> 0 Then                                                                                             ' Prüfung der Verbindung zum SQL Server.
        Call CheckError ("DB Verbindungsfehler")                                                                        ' Ergebnis wird an die Funktion CheckError übergeben.
    End If

    On Error Goto 0

    If cn.State <> adStateOpen Then                                                                                     ' Prüft ob Verbindung geöffnet ist. 
        WScript.Echo "Verbindung zur Datenbank kann nicht aufgebaut werden."                                            ' Ausgabe im Fehlerfall (Fenster)
        RC = 1                                                                                                          ' ReturnCode wird auf bei Verbindungsfehlern auf "1" gesetzt.
        Zeile = "Verbindung zur Datenbank kann nicht aufgebaut werden."                                                 ' Ergebnis wird in LOG-Datei geschrieben.
        Call Writelog (Zeile)                                                                                           ' Prozedur "WriteLog" wird aufgerufen   
        Call Ende                                                                                                       ' Prozedur "Ende" wird aufgerufen.
    End If

rs.open qry_pkv, cn, 3

        Zeile = "Skriptausfuehrung wird gestartet." 
        Call Trace (3,"I",Zeile)

If NOT rs.EOF THEN 

    rs.MoveFirst

        ReDim Preserve AusgabeDir_pkv(0)

            i=0
    
            Zeile = "PKV_DAV Verzeichnisse"                                                                             ' Überschrift für LOG-Datei.
            Call Trace (3,"@",Zeile)                                                                                    ' Überschrift wird in LOG-Datei geschrieben.

            Do While Not rs.EOF                                                                                         ' Schleife für durchsuchen der Datenbank.
                ReDim Preserve AusgabeDir_pkv(i)
                ReDim Preserve MANDT_pkv(i)
                AusgabeDir_pkv(i) = rs("PATH301")                                                                       ' Ausgabeverzeichnis wird in Variable gespeichert und verarbeitet.
                MANDT_pkv(i) = rs("MANDT")
                Zeile = "Verzeichnis in Bearbeitung - " & "Mandant: " & MANDT_pkv(i) & " Pfad: " & AusgabeDir_pkv(i)    ' Status der Verarbeitung. 
                Call Writelog (Zeile)                                                                                   ' Status wird in LOG-Datei geschrieben.
                Call loeschen_pkv(AusgabeDir_pkv(i))                                                                    ' Funktion löschen wird aufgerufen um Verzeichnis zu leeren wenn älter n Tage.                                                                                          

                i=i+1
                rs.MoveNext
            Loop                        

    ELSE 

        Zeile = "PKV_DAV Verzeichnisse"                                                                                 ' Ergebnis wird in LOG-Datei geschrieben.
        Call Trace (3,"@",Zeile)                                                                                        ' Prozedur "WriteLog" wird aufgerufen           
        Zeile = "Keine PKV_DAV Verzeichnisse vorhanden."                                                                ' Ergebnis wird in LOG-Datei geschrieben.
        Call Trace (3,"-",Zeile)                                                                                        ' Prozedur "WriteLog" wird aufgerufen           
    
End If
    
cn.close 

标签: sqloraclevbscript

解决方案


推荐阅读