SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR *Sqlstate, SQLINTEGER *NativeErrorPtr, SQLCHAR *MessageText, SQLSMALLINT BufferLength, SQLSMALLINT *TextLengthPtr);
L'état est rangé dans SqlState, le code erreur dans NativeErrorPtr et le message dans MessageTexte de taille maximale BufferLength.
Les valeurs possibles de HandleType sont les suivantes :
Le résultat est SQL_SUCCESS en cas de succès.
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
static SQLHANDLE hOrdreSql;
static SQL_CHAR Etat[256];
static SQL_INTEGER CodeErreur;
static SQL_CHAR Message[256];
static SQL_INTEGER TailleMessage;
...
if (SQLExecDirect(hOrdreSql, "delete from emp; delete from dept;", SQL_NTS)==SQL_SUCCESS)
{
...
}
...
if (SQLGetDiagRec(SQL_HANDLE_STMT, (SQLHANDLE)hOrdreSql, 1, Etat, &CodeErreur, Message, 256, &TailleMessage)==SQL_SUCCESS)
{
...
}
...
if (SQLMoreResults(SQL_HANDLE_DBC, hConnexion, SQL_ROLLBACK)!=SQL_SUCCESS)
{
...
}
...
if (SQLGetDiagRec(SQL_HANDLE_STMT, (SQLHANDLE)hOrdreSql, 1, Etat, &CodeErreur, Message, 256, &TailleMessage)==SQL_SUCCESS)
{
...
}
...