ODBCを使用したプログラムでいくつかの有用なエラー処理をセットアップしようとしています。ドキュメントによると、SQLExecDirectがSQL_ERRORを返す場合は、SQL_STATEといくつかのメッセージを取得するためにSQLGetDiagRecを呼び出すことができますが、SQLExecDirectからエラーが発生した直後にSQLGetDiagRecを呼び出すと、SQL_NO_DATAが返されます。SQLExecDirectは失敗しましたが、SQLGetDiagRecにデータがありません
コード:
result = SQLExecDirect(hstmt, <SQL Statement>, SQL_NTS);
if(result == SQL_ERROR)
{
SQLSMALLINT msg_len = 0;
SQLCHAR sql_state[6], message[256];
SQLINTEGER native_error = 0;
result = SQLGetDiagRec(SQL_HANDLE_DBC, hDbc, 1, sql_state, &native_error, message, countof(message), &msg_len);
// Here 'result' is SQL_NO_DATA
....
}
それが何らかの理由で他の例では、だけではないSQLExecDirectのために働きます。私はまた、SQLGetDiagRecの結果を循環させる必要があることを認識していますが、最初のSQL_NO_DATAがドキュメントに応じて返された場合は、それ以上ドキュメントが存在しないことを意味します。
私がテストしていた特定のエラーは、存在しないテーブルを要求していました。
少なくともエラーコードを取得するために何か必要なことはありますか、または間違ったSQLリクエストの結果として発生するエラーに対して診断が機能しませんか?
あなたはこれについて何かを考え出しましたか?私は同じことを見ている。 – DougN