| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> OCI (in C) : errror reporting for an SQL-statement
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('@@@@',NULL,F003,'@@@@'),
F004=decode('56',NULL,F004,'56'),
P012=decode('@@@@@@@@',NULL,P012,TO_DATE('@@@@@@@@','YYYYMMDD')),
P713=decode('00000000.50000',NULL,P713,'00000000.50000'),
P014=decode('@@@@',NULL,P014,'@@@@'),
P715=decode('@@@@@@@@@@@@@@',NULL,P715,'@@@@@@@@@@@@@@'),
P016=decode('@@@@',NULL,P016,'@@@@'),
P717=decode('@@@@@@@@@@@@@@',NULL,P717,'@@@@@@@@@@@@@@'),
P018=decode('@@@@',NULL,P018,'@@@@'),
P719=decode('@@@@@@@@@@@@@@',NULL,P719,'@@@@@@@@@@@@@@'),
P020=decode('@@@@',NULL,P020,'@@@@'),
P721=decode('@@@@@@@@@@@@@@',NULL,P721,'@@@@@@@@@@@@@@'),
P022=decode('@@@@',NULL,P022,'@@@@'),
P723=decode('@@@@@@@@@@@@@@',NULL,P723,'@@@@@@@@@@@@@@'),
P024=decode('@@@@',NULL,P024,'@@@@'),
P708=decode('@@@@',NULL,P708,'@@@@'),
P729=decode('@@@@@@@@@@@@@@@@',NULL,P729,'@@@@@@@@@@@@@@@@'),
P730=decode('@@@@@@@@@@@@@@@',NULL,P730,'@@@@@@@@@@@@@@@'),
F030=decode('@',NULL,F030,'@'),
F031=decode('1',NULL,F031,'1'),
F032=decode('@',NULL,F032,'@'),
F033=decode('@@@@',NULL,F033,'@@@@'),
F038=decode('@@@@@@',NULL,F038,'@@@@@@'),
F078=decode('@@@@@@@@',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',
rcs1=0 rcs2=0 rcs3=1 rid.rd.rcs4=0 rid.rd.rcs5=0 rid.rd.rcs6=0
Documentation to be found in
${ORACLE_DOC}/dcommon/oin/indexj.htm Received on Thu Sep 27 2001 - 03:06:38 CDT
![]() |
![]() |