
Signature
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
>> The same code is working fine if the length is less than 4000 and
>> failed for more than 4000 chars
[quoted text clipped - 3 lines]
> Recall a char is 2 bytes. So it seems the limit is 7821 chars or 3910
> chars for that particular type. See what other types are available.
Small nit: the number of bytes per char is variable, depending on the
database's encoding.
The OP showed various definitions on the Java side, trying to coerce the data
variously into a Java BLOB or CLOB type. They didn't show the Oracle column
definition for the column in question. Yet another case of the information
that contains the key to the answer having been omitted from the question.
Clearly the column must be VARCHAR2:
> VARCHAR2(size [BYTE | CHAR])
>
> Variable-length character string having maximum length size bytes or characters.
> Maximum size is 4000 bytes or characters, and minimum is 1 byte or 1 character.
Here's the secret, OP - the JDBC type has to match the column type. Just
calling it a BLOB or a CLOB (and there is a difference between those two!) to
Java doesn't make it so to the database.

Signature
Lew
Roedy Green - 22 Sep 2007 22:42 GMT
>Small nit: the number of bytes per char is variable, depending on the
>database's encoding.
In a pathological case UTF-8 can take 3 bytes per char.

Signature
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
David Harper - 23 Sep 2007 09:08 GMT
>> Small nit: the number of bytes per char is variable, depending on the
>> database's encoding.
>
> In a pathological case UTF-8 can take 3 bytes per char.
By "pathological case", you presumably mean "most of the languages of
east Asia, including India and China, the two most populous nations on
Earth"? ;-)
David Harper
Cambridge, England
John W. Kennedy - 23 Sep 2007 19:10 GMT
>>> Small nit: the number of bytes per char is variable, depending on the
>>> database's encoding.
[quoted text clipped - 4 lines]
> east Asia, including India and China, the two most populous nations on
> Earth"? ;-)
They're pathological for UTF-8.

Signature
John W. Kennedy
"The bright critics assembled in this volume will doubtless show, in
their sophisticated and ingenious new ways, that, just as /Pooh/ is
suffused with humanism, our humanism itself, at this late date, has
become full of /Pooh./"
-- Frederick Crews. "Postmodern Pooh", Preface
Roedy Green - 24 Sep 2007 01:33 GMT
On Sun, 23 Sep 2007 08:08:47 GMT, David Harper
<devnull@obliquity.u-net.com> wrote, quoted or indirectly quoted
someone who said :
>By "pathological case", you presumably mean "most of the languages of
>east Asia, including India and China, the two most populous nations on
>Earth"? ;-)
When I wrote that I was thinking more in terms of rows of dingbats
\u27xx

Signature
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
RedGrittyBrick - 24 Sep 2007 15:20 GMT
>> Small nit: the number of bytes per char is variable, depending on
>> the database's encoding.
>
> In a pathological case UTF-8 can take 3 bytes per char.
UTF-8 takes *four* octets for a code point outside Unicode's base plane.
For example the cuneiform numeric sign three sharu (U+1242E) is
F0 92 90 AE
David Harper - 24 Sep 2007 19:32 GMT
>>> Small nit: the number of bytes per char is variable, depending on
>>> the database's encoding.
[quoted text clipped - 4 lines]
> For example the cuneiform numeric sign three sharu (U+1242E) is
> F0 92 90 AE
How wonderfully ironic that there's a Unicode block (and a UTF-8
encoding!) devoted to the cuneiform script, a data storage format that
remains readable almost five thousand years after it was invented.
How many of our databases will still be readable in 7000 AD?
Thanks for sharing that. It made my day :-)
David Harper
Cambridge, England