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 -> Oracle OCI 7 question

Oracle OCI 7 question

From: Iain Wiseman <bibble_at_paradise.net.nz>
Date: Wed, 27 Feb 2002 19:44:19 +1300
Message-ID: <Ue%e8.416$S%1.58143@news02.tsnz.net>


First off, I am using OCI7 cos I have a gun to my head. FTX does not support 8.

Given the table (And I know this sound familar)

FILES
FILENAME VARCHAR(255)
FILECONTENT LONG RAW I am trying to update 2 records at a time using arrays and a piecewise operation.

so I do

oparse
obindps

oexn(aCursor,2)
while(continueProcessing == true)
{

    switch (result)
   {

        // Successful Fetched the whole lot
        case CI7_SUCCESS:
        {
            continueProcessing = false;
            break;
        }
        case 3129:
        {

// Get Information About Piece
result = OCI7_getpi(aCursor,&piece);
// If This is the first Piece
// set Pointer to be the next LONG or LONG RAW in the
DataObject. if (piece==OCI_FIRST_PIECE) { // Set Address for the piece pointerToCurrentRow = column.getData() + (nextRow * column.getColumnSize()); nextPiece = 0; nextRow++; } unsigned long dataLeftToWrite = dataLengths[nextRow-1] - (nextPiece * iPieceSize); length = iPieceSize; if(dataLeftToWrite < iPieceSize) { length = dataLeftToWrite; piece = OCI_LAST_PIECE; }
// Set The Data To be used to populate the Piece
pointerToCurrentPiece = pointerToCurrentRow + (nextPiece * iPieceSize); nextPiece++; result = OCI7_setpi(aCursor,piece,pointerToCurrentPiece,&length); break; }

    }

    FIRST_TIME_THROUGH = false;

    // Do Next Execute
    if(continueProcessing == true)
    {

        result =
OCI7_executeArrayStatement(aCursor,inDataObject.getNumberOfRows());

    }

}

I know that all the code is not here but enough to grasp the idea.

This works fine for insert but not for updates.

My question is: When updating two records at once in a piecewise operation do you set OCI_LAST_PIECE once a the end of the whole piece operation.

E.g if writting two records, one record 10 and the other of 9 bytes in 6 byte chunks would the logic be

record 1:ABCDEFGHIJ
record 2:12456789

oexn (signals 3129)

getpi
setpi piece=2 length=6
oexn
setpi piece=3 length=4
oexn
getpi
setpi piece=2 length=6
oexn
setpi piece=3 length=3
oexn

Code examples would be good.

Thanks

Iain
. Received on Wed Feb 27 2002 - 00:44:19 CST

Original text of this message

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