OCI (in C) : errror reporting for an SQL-statement
Date: Thu, 27 Sep 2001 10:06:38 +0200
Message-ID: <3BB2DE0E.2000004_at_gmx.net>
void err_report(Cda_Def *cursor, char *sql_cmd) {
/*
Oracle 7.3.4.OCI
If your SQL statement does not cause a parse error, Oracle sets
sqlca.sqlerrd[4] to zero.
Oracle also sets sqlca.sqlerrd[4] to zero if a parse error begins at the
first character (which occupies position zero).
So, check sqlca.sqlerrd[4] only if sqlca.sqlcode is negative, which
means that an error has occurred.
*/
auto sword n;
auto text msg[512];
printf("\n-- ORACLE error--\n");
n = oerhms(&lda, cursor->rc, msg, (sword) sizeof msg);
fprintf(stderr, "%s", msg);
if (cursor->fc > 0) { fprintf(stderr, "Processing OCI function %s\n", oci_func_tab[cursor->fc]); }
fprintf(stderr, "v2_rc=%i\n", cursor->v2_rc); fprintf(stderr, "rc=%i\n", cursor->rc); fprintf(stderr, "ft=%i\n", cursor->ft); fprintf(stderr, "rpc=%i\n", cursor->rpc); fprintf(stderr, "peo=%i (%s)\n", cursor->peo, (NULL==sql_cmd) ? "" :&(sql_cmd[cursor->peo]));
fprintf(stderr, "wrn=%i\n", cursor->wrn); fprintf(stderr, "rcs1=%i\n", cursor->rcs1); fprintf(stderr, "rcs2=%i\n", cursor->rcs2); fprintf(stderr, "rcs3=%i\n", cursor->rcs3); fprintf(stderr, "rid.rd.rcs4=%i\n", cursor->rid.rd.rcs4); fprintf(stderr, "rid.rd.rcs5=%i\n", cursor->rid.rd.rcs5); fprintf(stderr, "rid.rd.rcs6=%i\n", cursor->rid.rd.rcs6); fprintf(stderr, "rid.rcs7=%i\n", cursor->rid.rcs7); fprintf(stderr, "rid.rcs8=%i\n", cursor->rid.rcs8); fprintf(stderr, "ose=%i\n", cursor->ose); fprintf(stderr, "chk=%i\n", cursor->chk);/* Filler: fprintf(stderr, "rcs9=%s\n", cursor->rcs9); */ }
outputs something like this:
-- ORACLE error--
ORA-01008: not all variables bound
Processing OCI function OEXEC, OEXN
v2_rc=-1008
rc=1008
ft=5
rpc=0
peo=7 (BOSS___A SET F003=decode('_at_@@@',NULL,F003,'@@@@'),
F004=decode('56',NULL,F004,'56'),
P012=decode('_at_@@@@@@@',NULL,P012,TO_DATE('@@@@@@@@','YYYYMMDD')),
P713=decode('00000000.50000',NULL,P713,'00000000.50000'),
P014=decode('_at_@@@',NULL,P014,'@@@@'),
P715=decode('_at_@@@@@@@@@@@@@',NULL,P715,'@@@@@@@@@@@@@@'),
P016=decode('_at_@@@',NULL,P016,'@@@@'),
P717=decode('_at_@@@@@@@@@@@@@',NULL,P717,'@@@@@@@@@@@@@@'),
P018=decode('_at_@@@',NULL,P018,'@@@@'),
P719=decode('_at_@@@@@@@@@@@@@',NULL,P719,'@@@@@@@@@@@@@@'),
P020=decode('_at_@@@',NULL,P020,'@@@@'),
P721=decode('_at_@@@@@@@@@@@@@',NULL,P721,'@@@@@@@@@@@@@@'),
P022=decode('_at_@@@',NULL,P022,'@@@@'),
P723=decode('_at_@@@@@@@@@@@@@',NULL,P723,'@@@@@@@@@@@@@@'),
P024=decode('_at_@@@',NULL,P024,'@@@@'),
P708=decode('_at_@@@',NULL,P708,'@@@@'),
P729=decode('_at_@@@@@@@@@@@@@@@',NULL,P729,'@@@@@@@@@@@@@@@@'),
P730=decode('_at_@@@@@@@@@@@@@@',NULL,P730,'@@@@@@@@@@@@@@@'),
F030=decode('_at_',NULL,F030,'@'),
F031=decode('1',NULL,F031,'1'),
F032=decode('_at_',NULL,F032,'@'),
F033=decode('_at_@@@',NULL,F033,'@@@@'),
F038=decode('_at_@@@@@',NULL,F038,'@@@@@@'),
F078=decode('_at_@@@@@@@',NULL,F078,TO_DATE('@@@@@@@@','YYYYMMDD')),
F079=decode('20011001',NULL,F079,TO_DATE('20011001','YYYYMMDD')),
F099=decode('A',NULL,F099,'A'),
F100=decode('20010924',NULL,F100,TO_DATE('20010924','YYYYMMDD')),
WHERE
K001='DE0001066280', K002='EUR ', K003='HAN',
)
wrn=0
rcs1=0 rcs2=0 rcs3=1 rid.rd.rcs4=0 rid.rd.rcs5=0 rid.rd.rcs6=0
rid.rcs7=0
rid.rcs8=0
ose=0
chk=0
Documentation to be found in
${ORACLE_DOC}/dcommon/oin/indexj.htm Received on Thu Sep 27 2001 - 10:06:38 CEST
