SLES 12マシンにunixODBC-2.3.1-4.95.x86_64をインストールし、アプリケーションを作成しました。しかし、私はUnixODBCを使ってPosgreSQLでエラー処理の問題に直面しました。私はてSQLGetDiagFieldにdiagIdの異なるバリアントを使用しようとしているPostgreSQLネイティブエラーコードの取得
void checkDiag (SQLSMALLINT handleType, SQLHANDLE handle)
{
SQLRETURN rc = SQL_ERROR;
SQLCHAR sqlState[6];
SQLINTEGER nError;
SQLSMALLINT recnum = 0;
SQLCHAR eMsg[SQL_MAX_MESSAGE_LENGTH];
SQLCHAR nativeError[SQL_MAX_MESSAGE_LENGTH];
while (rc != SQL_NO_DATA_FOUND)
{
rc = SQLGetDiagRec (handleType,
handle,
recnum,
sqlState,
&nError,
eMsg,
255,
NULL);
if (rc != SQL_NO_DATA_FOUND)
{
SQLGetDiagField(handleType,
handle,
recnum,
SQL_DIAG_NATIVE,
nativeError,
255,
NULL);
printf("RECNUM %d\n sqlState = %s\n nError = %d\n Error Message %s\n nativeError %s \n",
recnum, sqlState, nError, (char *) eMsg, (char *)nativeError);
}
recnum++;
}
}
:SQL_DIAG_MESSAGE_TEXT、SQL_DIAG_NATIVE、SQL_DIAG_SQLSTATEを
は、これを行うために、私は次の関数を作成しました。 PostgreSQLのエラーIDはすべて取得しましたが、 私はPostgresqlエラーコードID = -1を取得し続けています。だから私の質問は次のとおりです。
それはunixODBCのAPIを使用して、ネイティブのPostgreSQLのエラーコードIDを取得することはできますか? 私が間違っていることを教えてください。