[pgsql-jp: 27097] ODBC で接続時、エラーなのにSQLSTATEは正常値で返される
hotta
hotta @ ist.fujitsu.com
2002年 8月 21日 (水) 14:37:14 JST
はじめまして、堀田と申します。
Linux RedHat 7.2上でunixODBC 2.0.7を使用し、PostgreSQL 7.1.3へ
ODBC経由で接続しています。
ODBC関数でエラーになる場合、SQLGetDiagRec関数を呼び出し、エラー
の詳細を取得しています。
そのエラーの詳細を取得した時に、SQLSTATEが"00000"という正常値
が返される場合があります。
[例]
HSTMT hstmt;
UCHAR select[256];
/* errstateに適当な値を入れておく */
char errstate[6] = "99999";
char errmsg[256];
SDWORD errcode;
SWORD sz;
:
:
/* わざとエラーになる文 */
strcpy(selectstmt, "SELECT * FRO TABLE1 WHERE COLUMN1 = 10");
if (SQLExecDirect(hstmt, selectstmt, SQL_NTS) != SQL_SUCCESS) {
SQLGetDiagRec( SQL_HANDLE_STMT, hstmt, 1,
errstate, &errcode, errmsg, sizeof( errmsg ), &sz );
/* errstate(これがSQLSTATE)が"00000"で返される */
printf( "%s(%d)%*s\n", errstate, errcode, (int)sz, errmsg );
exit(-1);
}
出力される結果は、以下の通りです。
00000(-1)[unixODBC]Error while executing the query (non-fatal);
ERROR: parser: parse error at or near "fro"
errcodeやerrmsgにはエラー情報が返されていますが、errstate(これがSQLSTATE)
には"00000"という正常値が返されてしまいます。
エラーなのに正常値と返されるので、不思議で仕方ありません(おかしいのでは
ないかとも思っています)。
どなたか理由など分かる方がいましたら教えて下さい。
-------------------------------------------
Hotta
E-Mail :hotta @ ist.fujitsu.com
pgsql-jp メーリングリストの案内