2 VARRAYS
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