Oracle
 sql >> Datenbank >  >> RDS >> Oracle

asp classic, wie man fehler abfängt, wenn man sich mit einem orakel-verknüpften server verbindet

Ich neige dazu, diesen Code zu verwenden...

'GetDataSet error columns...
const C_ERROR               = "ERROR"               'Used when an error is generated - to be fed to the comsuming routine
const C_NO_DATA             = "NO_DATA"             'Used when no data is returned to a consuming routine
const C_COL_IDENTIFIER      = 0
const C_COL_ERROR_ID        = 1
const C_COL_ERROR_MESSAGE   = 2
const C_COL_SQL             = 3
const C_COL_CONNECTION      = 4

'GetDataSet
'   Returns a table of data based on the supplied SQL statement and connection string.
'Parameters:
'   sqlString (string) - The SQL string to be sent.
'   connString (string) - The database connection string.
'Usage:
'   dataSet = GetDataSet(sqlString, connString)
'Description:
'   This function generates a table of information in a 2 dimensional array.  The first dimension represents the columns
'   and the second the rows.  If an error occurs while the routine is executing the array and the base index (0,0) is set 
'   to C_ERROR, (0,1) to the VBScript error index, and (0,2) to the VBScript error description.
function GetDataSet(sqlString, connString)
    'Initialise...
    dim returnVal, rsData
    on error resume next
        'Define and open the recordset object...
        set rsData = Server.CreateObject("ADODB.RecordSet")
        rsData.Open sqlString, connString, 0, 1, 1
        'Initialise an empty value for the containing array...
        redim returnVal(0,0)
        returnVal(0,0) = C_NO_DATA
        'Deal with any errors...
        if not rsData.EOF and not rsData.BOF then
            'Store the data...
            returnVal = rsData.GetRows()
            select case err.number
                case 3021   'No data returned
                    'Do nothing as the initial value will still exist (C_NO_DATA)
                case 0      'No error
                    'Do nothing as data has been returned
                case else
                    redim returnVal(4,0)
                    returnVal(C_COL_IDENTIFIER,0) = C_ERROR
                    returnVal(C_COL_ERROR_ID,0) = err.number
                    returnVal(C_COL_ERROR_MESSAGE,0) = err.description
                    returnVal(C_COL_SQL,0) = sqlString
                    returnVal(C_COL_CONNECTION,0) = connString
            end select
        end if
        'Tidy up...
        rsData.close
        set rsData = nothing
    on error goto 0
    'Return the array...
    GetDataSet = returnVal
end function

Um meine Datensätze zu bekommen. Es gibt ein Array zurück, das Sie nach Belieben handhaben können (ähm ... handhaben von Frauen?).

Wenn ein Fehler auftritt, werden die Details in den entsprechenden Elementen des Arrays zurückgegeben.