1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
/**********************************************************************
* SQLError (deprecated see SQLGetDiagRec)
*
**********************************************************************
*
* This code was created by Peter Harvey (mostly during Christmas 98/99).
* This code is LGPL. Please ensure that this message remains in future
* distributions and uses of this code (thats about all I get out of it).
* - Peter Harvey pharvey@codebydesign.com
*
**********************************************************************/
#include <config.h>
#include "driver.h"
/*!
* \brief Get oldest error for the given handle.
*
* This is deprecated - use SQLGetDiagRec instead. This is mapped
* to SQLGetDiagRec. The main difference between this and
* SQLGetDiagRec is that this call will delete the error message to
* allow multiple calls here to work their way through all of the
* errors even with the lack of an ability to pass a specific message
* number to be returned.
*
* \param hDrvEnv
* \param hDrvDbc
* \param hDrvStmt
* \param szSqlState
* \param pfNativeError
* \param szErrorMsg
* \param nErrorMsgMax
* \param pcbErrorMsg
*
* \return SQLRETURN
*
* \sa SQLGetDiagRec
*/
SQLRETURN SQLError( SQLHENV hDrvEnv,
SQLHDBC hDrvDbc,
SQLHSTMT hDrvStmt,
SQLCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLCHAR *szErrorMsg,
SQLSMALLINT nErrorMsgMax,
SQLSMALLINT *pcbErrorMsg )
{
SQLSMALLINT nHandleType;
SQLHANDLE hHandle;
SQLRETURN nReturn;
HLOG hLog;
/* map call to SQLGetDiagRec */
if ( hDrvEnv )
{
nHandleType = SQL_HANDLE_ENV;
hHandle = hDrvEnv;
hLog = ((HDRVENV)hDrvEnv)->hLog;
}
else if ( hDrvDbc )
{
nHandleType = SQL_HANDLE_DBC;
hHandle = hDrvDbc;
hLog = ((HDRVDBC)hDrvDbc)->hLog;
}
else if ( hDrvStmt )
{
nHandleType = SQL_HANDLE_STMT;
hHandle = hDrvStmt;
hLog = ((HDRVSTMT)hDrvStmt)->hLog;
}
else
return SQL_INVALID_HANDLE;
nReturn = SQLGetDiagRec_( nHandleType, hHandle, 1, szSqlState, pfNativeError, szErrorMsg, nErrorMsgMax, pcbErrorMsg );
/* unlike SQLGetDiagRec - we delete the message returned */
if ( SQL_SUCCEEDED( nReturn ) )
logPopMsg( hLog );
return nReturn;
}
|