Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> OCI (in C) : errror reporting for an SQL-statement

OCI (in C) : errror reporting for an SQL-statement

From: Torsten Reichert <Torsten.Reichert_at_gmx.net>
Date: Thu, 27 Sep 2001 10:06:38 +0200
Message-ID: <3BB2DE0E.2000004@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('@@@@',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',

)
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 - 03:06:38 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US