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

Home -> Community -> Usenet -> c.d.o.misc -> Re: OCI program

Re: OCI program

From: John Mullee <jmullee_at_hotmail.com>
Date: Tue, 16 Mar 1999 18:21:04 +0100
Message-ID: <36EE9300.516DD946@hotmail.com>


Yacov Wolfowicz wrote:
> The problem arises when there are some records in the files which have
> the same key ( which is supposed to be unique in the table). Now, the
> whole insert action is failed and none of the 200 records was inserted.
> My question is this: is there a way for me to retreive the INDEX of the
> record that failed? ( let's say that i get an error saying : "record no.
> 95 failed to be inserted" ). That way i can remove the faulty record and
> try again.

I think the errors are in the form of multiple records, like this.... this fn is just for debugging .. might help ..

const int ERR_STRING_LEN = (1024*4);
char oci_errorstring[ERR_STRING_LEN];

char *checkerr(OCIError *errhp, sword status)   {
   unsigned char * buff = 0;
   long errcode = 0;
   char * retval = "unknown OCI error";    int err_call_result = OCI_SUCCESS;
   ub4 err_record = 1;
   try

     {
      memset(oci_errorstring, 0, ERR_STRING_LEN);
      switch (status)
        {
         case OCI_SUCCESS: default:
            break;
         case OCI_SUCCESS_WITH_INFO:
            retval = "Error - OCI_SUCCESS_WITH_INFO\0";
            break;
         case OCI_NEED_DATA:
            retval = "Error - OCI_NEED_DATA\0";
            break;
         case OCI_NO_DATA:
            retval = "Error - OCI_NODATA\0";
            break;
         case OCI_ERROR:
            lstrcpy(oci_errorstring, "Error - ");
            while(err_call_result == OCI_SUCCESS)
              {
               buff = (unsigned char
*)&(oci_errorstring[lstrlen(oci_errorstring)]);
               err_call_result = OCIErrorGet(errhp, err_record++, NULL,
&errcode, buff,
                                            
(ub4)ERR_STRING_LEN-lstrlen(oci_errorstring),
                                             OCI_HTYPE_ERROR);
              }
            retval = oci_errorstring;
            break;
         case OCI_INVALID_HANDLE:
            retval = "Error - OCI_INVALID_HANDLE\0";
            break;
         case OCI_STILL_EXECUTING:
            retval = "Error - OCI_STILL_EXECUTE\0";
            break;
        };
     }

   catch(...) { TRACE("checkerr: EXCEPTION CAUGHT!!\n"); };    return retval;
  } Received on Tue Mar 16 1999 - 11:21:04 CST

Original text of this message

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