2 VARRAYS

From: Andrea Cannaos <andrea.cannaos_at_datadotcom.it>
Date: Mon, 23 Jul 2001 18:59:05 +0200
Message-ID: <9jhl2d$1lp6$1_at_stargate1.inet.it>


I'm trying to fill a message based on two varrays; the first is always well filled, the second is always empty (but i get no errors);

this is the code:

SQL SCRIPT
 ---
 CREATE TYPE RIGAMSGTYPE AS VARRAY(512) OF VARCHAR2(1024);
/

 CREATE TYPE MSGEPTYPE AS OBJECT (
   TIPO NUMBER,
   TESTATA VARCHAR2(1024),
   VARRAY1 RIGAMSGTYPE,
   VARRAY2 RIGAMSGTYPE
 )
/

 typedef struct TagMessage {
   OCINumber nTipoRecord;
   OCIString *szRecordData;
   OCIArray *VArray1;
   OCIArray *VArray2;
 } message;

 ---
   /* creating RIGAMSGTYPE object */
   checkerr(errhp, OCITypeByName(envhp, errhp, svchp, (CONST text*)0, 0,

     (CONST text*)"RIGAMSGTYPE", strlen("RIGAMSGTYPE"),
     (CONST text*)0, 0, OCI_DURATION_SESSION, OCI_TYPEGET_HEADER,
     &rigamsg_tdo));

   checkerr(errhp, OCIObjectNew(envhp, errhp, svchp, OCI_TYPECODE_VARRAY,    rigamsg_tdo, NULL,
     OCI_DURATION_SESSION, (ub1)TRUE, (dvoid **)&pMsg->VArray1));

   checkerr(errhp, OCIObjectNew(envhp, errhp, svchp, OCI_TYPECODE_VARRAY,    rigamsg_tdo, NULL,
     OCI_DURATION_SESSION, (ub1)TRUE, (dvoid **)&pMsg->VArray2));

   /*

  • Varray 1 */ for(nIndex=0;nIndex<50;nIndex++){ sprintf(szDettaglio,"VARRAY 1 : DETTAGLIO NUMERO - %2d",nIndex);
     elemind = (OCIString *)0;
     pOCIString = (OCIString *)0;

     checkerr(errhp, OCIStringAssignText(envhp, errhp,
       (CONST text *)szDettaglio, strlen(szDettaglio), &pOCIString));

     checkerr(errhp, OCICollAppend( (OCIEnv *)envhp, (OCIError *)errhp,
                                    (CONST dvoid*)pOCIString,
                                    (CONST dvoid*)&elemind,
                                    (OCIColl *)pMsg->VArray1));
   }

   /*

  • Varray 2 */ for(nIndex=0;nIndex<100;nIndex++){ sprintf(szDettaglio,"VARRAY 2 : DETTAGLIO NUMERO - %2d",nIndex);
     elemind = (OCIString *)0;
     pOCIString = (OCIString *)0;

     checkerr(errhp, OCIStringAssignText(envhp, errhp,
       (CONST text *)szDettaglio, strlen(szDettaglio), &pOCIString));

     checkerr(errhp, OCICollAppend( (OCIEnv *)envhp, (OCIError *)errhp,
                                    (CONST dvoid*)pOCIString,
                                    (CONST dvoid*)&elemind,
                                    (OCIColl *)pMsg->VArray2));
   } Received on Mon Jul 23 2001 - 18:59:05 CEST

Original text of this message