KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I use Oracle 11g (on Red Hat). I have simple regular table with XMLType column: CREATE TABLE PROJECTS ( PROJECT_ID NUMBER(*, 0) NOT NULL, PROJECT SYS.XMLTYPE, ); Using Oracle SQL Developer (on Windows) I do: select T1.PROJECT P1 from PROJECTS T1 where PROJECT_ID = '161'; It works. I get one cell. I can double click and download whole XML file. Then I tried to get result as CLOB: select T1.PROJECT.getClobVal() P1 from PROJECTS T1 where PROJECT_ID = '161'; It works. I get one cell. I can double click and see whole text and copy it. BUT there is a problem. When I copy it to clipboard I get only first 4000 characters. It seems that there is 0x00 character at position 4000 and the rest of CLOB is not copied. To confirm this, I wrote check in java: // ... create projectsStatement Reader reader = projectsStatement.getResultSet().getCharacterStream( "P1" ); BufferedReader bf = new BufferedReader( reader ); char buffer[] = new char[ 1024 ]; int count = 0; int globalPos = 0; while ( ( count = bf.read( buffer, 0, buffer.length ) ) > 0 ) for ( int i = 0; i < count; i++, globalPos++ ) if ( buffer[ i ] == 0 ) throw new Exception( "ZERO at " + Integer.toString(globalPos) ); Reader returns full XML but my exception is thrown because there is null character at position 4000. I could remove this single byte but this would be rather strange workaround. I don't use VARCHAR2 there but maybe this problem is related to VARCHAR2 limitation (4000 bytes) somehow ? Any other ideas ? Is this an Oracle bug or am I missing something ? -------------------- Edit -------------------- Value was inserted using following stored procedure: create or replace procedure addProject( projectId number, projectXml clob ) is sqlstr varchar2(2000); begin sqlstr := 'insert into pro
Tags (comma-separated)
Save Edits
Cancel