库里面有一些方法是"隐藏"的,但是有时候这些方法可能提供非常有用的信息.
最重要的一个 (ECPGdo)(函数)记录它的所有展开的字符串,也就是说,带有插入的所有变量的字符串和从Postgres 服务器来的结果.这个对搜索你的 SQL 语句的错误是非常有用的.
ECPGstatus() 这个方法/函数在我们与一个数据库联接后返回 TRUE 并且如果没有联接返回 FALSE .
exec sql include sqlca;到你的文件的包含段里.这样做将会定义一个结构和一个象下面一样名为 sqlca 的变量:
struct sqlca
{
char sqlcaid[8];
long sqlabc;
long sqlcode;
struct
{
int sqlerrml;
char sqlerrmc[70];
} sqlerrm;
char sqlerrp[8];
long sqlerrd[6];
/* 0: empty */
/* 1: OID of processed tuple if applicable */
/* 2: number of rows processed in an INSERT, UPDATE */
/* or DELETE statement */
/* 3: empty */
/* 4: empty */
/* 5: empty */
char sqlwarn[8];
/* 0: set to 'W' if at least one other is 'W' */
/* 1: if 'W' at least one character string */
/* value was truncated when it was */
/* stored into a host variable. */
/* 2: empty */
/* 3: empty */
/* 4: empty */
/* 5: empty */
/* 6: empty */
/* 7: empty */
char sqlext[8];
} sqlca;
如果最后一个SQL 语句发生了错误,那么 sqlca.sqlcode
将是非零值.如果 sqlca.sqlcode 小于 0 那么就是发生了某种严重的错误,象数据库定义与查询定义不一致等.如果大于
0 则是通常的错误,象表不包括所要求的行等.
sqlca.sqlerrm.sqlerrmc 将包含一个字符串描述该错误.该字符串以源文件的行号结尾。