Page 1 of 1

Handling BLOB fields through ODAC

Posted: Fri 30 Dec 2005 11:36
by Marian Aldenhövel
Hi,

I am porting a program from a Firebird backend to Oracle 10.2. The program uses kbmMW to implement a middle tier and ODAC 5 to actually access the Database. This makes for a high stack of software components to track down a problem :-).

The problem I have is inserting into BLOB fields. The table is:

CREATE TABLE LOG
(
RECID INTEGER NOT NULL,
LOGDATE DATE,
TABLENAME VARCHAR2(50),
USERID INTEGER,
CHANGES CLOB,
CHANGE_KIND INTEGER NOT NULL
)

This is an audit-table as you can tell.

The middleware creates SQL like:

>-------------------------------------------------
>28.12.2005 14:49:58
>kbmMWODAC4Resolver1 - Insert record SQL
>INSERT INTO LOG ( RECID,LOGDATE,TABLENAME,USERID,CHANGES,CHANGE_KIND ) VALUES >( :RECID,:LOGDATE,:TABLENAME,:USERID,:CHANGES,:CHANGE_KIND )

And sets the Parameters as:

>-------------------------------------------------
>28.12.2005 14:49:58
>Parameters
>RECID(ptInput/Float)=0
>LOGDATE(ptInput/DateTime)=28.12.2005 14:49:58
>TABLENAME(ptInput/String)=USERS
>USERID(ptInput/Float)=1
>CHANGES(ptInput/OraClob)=
>UkVDSUQgT3JpZz0xDQpSRUNJRCBOZXc9MQ0KTE9HR0VEX0lOIE9yaWc9Rg0KTE9HR0VEX0lOIE5l
>dz1UDQpMQVNUVVNFRCBPcmlnPQ0KTEFTVFVTRUQgTmV3PTI4LjEyLjIwMDUgMTQ6NDk6NTQNCg==
>CHANGE_KIND(ptInput/Float)=3

The database does not like that. It gives me:

ORA-22275: Ungültiger LOB-Locator angegeben.

"Invalid LOB-Locator".

I have researched this a bit and found strange ways to insert data into a Oracle-Table that includes a BLOB (using empty_blob() and INTO).

Unfortunately I can not code to Oracle directly as I am going through this middle tier. Any chance for a solution?

[email protected]

Ciao, MM

Posted: Tue 03 Jan 2006 15:20
by Challenger
Please look through CLOB with stpred procedure error topic