Handling BLOB fields through ODAC
Posted: Fri 30 Dec 2005 11:36
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
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