sql >> Base de Datos >  >> RDS >> Oracle

asp classic cómo atrapar errores al conectarse a un servidor vinculado de Oracle

Tiendo a usar este código...

'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

Para obtener mis conjuntos de datos. Devuelve una matriz que puede manejar el hombre (ermm... ¿manejar la mujer?) como desee.

Si hay un error, los detalles se devuelven en los elementos apropiados de la matriz.