How to insert a new Clob with data great then 4000 bytes [message #91068] |
Wed, 20 March 2002 22:14 |
Yoel Yaffe
Messages: 1 Registered: March 2002
|
Junior Member |
|
|
Hi,
I'm working with the jdbc2.0,oracle driver: 8.1.7.0.0.
while I'm inserting a new Clob, that great then 4000 bytes, I'm getting an
error, one of:
1. "java.sql.SQLException: ORA-01461: can bind a LONG value only for insert
into a LONG column" - for the follow implementation:
String sqlString ="INSERT INTO BASIC_LOB_TABLE ( X, B, C ) VALUES (
?, '1010101', ?)";
PreparedStatement stmt = conn.prepareStatement(sqlString);
stmt.setString(1, "777");
Reader r = new InputStreamReader(new
StringBufferInputStream(prepareClobText(4005)));
stmt.setCharacterStream(2, r,4005);
stmt.executeQuery();
or
2. "java.sql.SQLException: ORA-01704: string literal too long" - for the follow implementation:
String sqlString ="INSERT INTO BASIC_LOB_TABLE ( X, B, C ) VALUES (
'222', '1010101', '"+prepareClobText(4005)+"')";
Statement st = conn.createStatement();
st.execute(sqlString);
is it a way to insert a new Clob that exceeded the 4000 bytes ?
thanks,
|
|
|
Re: How to insert a new Clob with data great then 4000 bytes [message #91176 is a reply to message #91068] |
Thu, 16 May 2002 22:28 |
Boris
Messages: 5 Registered: February 2001
|
Junior Member |
|
|
I have the same exact problem. Except I tried to use a StringReader for your first variant and didn't get any exceptions at all but instead an entry of size 0 in the table (Oracle 8.1)
After a bit of research, it appears JDBC 2.0 does not allow one to create new CLOB objects directly, and Oracle doesn't allow one to insert extra-long strings into CLOB columns without converting those strings to VARCHAR2 somewhere along the way. It seems JDBC 3.0 is going to allow at least editing, if not creation, of CLOBs, but until then we are all stuck. (?!?)
|
|
|
|