Posted By: Greg Stevenson 9.2 Client conflict with LOBs - 03/18/04 01:10 AM
Just noticed some sort of conflict using the 9.2 client drivers. No problems with 8.1.7, seems to be related to LOBs. Trying to track down a reproducible outside of the application. Does this ring any bells?
Posted By: Marco Kalter Re: 9.2 Client conflict with LOBs - 03/18/04 10:41 PM
What exactly goes wrong? Any error messages or exceptions?
Posted By: Greg Stevenson Re: 9.2 Client conflict with LOBs - 03/19/04 04:04 AM
Will email a snapshot of the error message as well as other info.
Posted By: Greg Stevenson Re: 9.2 Client conflict with LOBs - 03/26/04 02:06 AM
Marco,

Traced down a reproducible on the 9i LOB issue and found that we were doing some very bad things and perhaps unnecessary things. Here is the situation. For stored procedures we create TLobLocator for each LOB parameter. If the parameter is not null or empty the Locator is passed into dbms_lob.createtemporay() to get a temp session lob. If it is empty(but not null), TLobLocator.SetEmpty is called. The LobLocators are then passed into the StoredProc/Function via SetComplexVariable and the Execute is called. After the returned data is extracted, any tempLobs are freed via dbms_lob.freetemporay() and then all the LobLocators are freed. However, looking at DOA it seems SetEmpty (re)creates through OCI calls and my calls to dbms_lob are unnecessary. Is this correct?

--Greg
Posted By: Marco Kalter Re: 9.2 Client conflict with LOBs - 03/26/04 10:10 PM
I'm not sure if I completely understand the scenario, but it should not be necessary to create or free temporary LOB's through the dbms_lob package. You can create them on the client through TLOBLocator.CreateTemporary, pass them to the server, and free them on the client as well.
Posted By: Greg Stevenson Re: 9.2 Client conflict with LOBs - 03/26/04 10:42 PM
My version of the code (3.4.6.1 March 2002) does not seem to have CreateTemporary. Does have Clear and SetEmpty which seem to call OCIObjectNew with a LobType, but when I write I get an invalid handle exception. Is there later code and if so, is iBASEt current so I can get it. If not, I'll make it so.
© Allround Automations forums