Обсуждение: libpq: how to get error code (not message)

Поиск
Список
Период
Сортировка

libpq: how to get error code (not message)

От
X X
Дата:
Hello,

I'm writing a client in C++ using the C-library
(libpq) interface to PostgreSQL server.

I would like to know what function to call to obtain
one of the codes listed at 

http://www.postgresql.org/docs/7.4/static/errcodes-appendix.html

(I'm aware from other postings that in JDBC it would
be a getSQLState() call, but what if I have to code
the client in C/C++ and use libpq ?)

I found that the error codes are defined in file
errcodes.h under the /server include directory, but
can't find the client-side function that returns them.

Any hints are much appreciated,
Serge


    
__________________________________ 
Do you Yahoo!? 
Yahoo! Mail - Helps protect you from nasty viruses. 
http://promotions.yahoo.com/new_mail


Re: libpq: how to get error code (not message)

От
Michael Fuhr
Дата:
On Wed, Dec 01, 2004 at 07:11:44PM -0800, X X wrote:

> I would like to know what function to call to obtain
> one of the codes listed at 
> 
> http://www.postgresql.org/docs/7.4/static/errcodes-appendix.html

I think you're looking for PQresultErrorField() called with the
fieldcode argument set to PG_DIAG_SQLSTATE.

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/


Re: libpq: how to get error code (not message)

От
Michael Fuhr
Дата:
On Thu, Dec 02, 2004 at 03:59:46PM -0800, X X wrote:

> > I think you're looking for PQresultErrorField()
> > called with the
> > fieldcode argument set to PG_DIAG_SQLSTATE.
>
> Thanks for your reply. This is exactly what I was
> looking for, but the libpq documentation does not
> mention it (at least I did not find).

Appendix A says:
   All messages emitted by the PostgreSQL server are assigned   five-character error codes that follow the SQL
standard's  conventions for "SQLSTATE" codes. 
 

The PQresultErrorField() function is documented in the libpq
"Command Execution Functions" section:

http://www.postgresql.org/docs/7.4/static/libpq-exec.html#AEN20619

The documentation says:
   The following field codes are available:   ...
   PG_DIAG_SQLSTATE       The SQLSTATE code for the error (see Appendix A). Not localizable.Always present.

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/