[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 メーリングリストの案内