2
votes

I'm coding a Java function inside Oracle Database which produce allot of text! how to convert a string to CLOB (oracle.sql.CLOB) in java? what is the straight-forward way to do?

I'm trying to build a function which has String as an input with oracle.sql.CLOB as an output, but it's not working! I'm not doing any jdbc related work!

here is what I have (which is not working!)

  public static CLOB str2clob(String s)
  {
         oracle.sql.CLOB clob = null;

         try
         {
               clob.setString(0,s);

         } catch (Exception e)
         {
         }
         return clob;
  }
3
Those two links don't directly provide what the poster is asking for... - Barett

3 Answers

2
votes
/*********************************************************************************************
 * From String to CLOB
 *  @return CLOB representation of string
 *********************************************************************************************/
private java.sql.Clob stringToClob(String source)
{
    try
    {
        return new javax.sql.rowset.serial.SerialClob(source.toCharArray());
    }
    catch (Exception e)
    {
        log.error("Could not convert string to a CLOB",e);
        return null;
    }
}
0
votes

Something like this:

oracle.sql.CLOB **clob** = ((OracleResultSet)rset).getCLOB(index);

StreamReader sr = new StreamReader(**yourString**);
char[] bufr = new char[clob.getChunkSize()];


OutputStream os = new OutputStream(clob.getOutputStream());

int charsRead = 0;
for(charsRead = sr.read(bufr); charsRead>-1; charsRead = sr.read(bufr)){
   os.write(bufr, 0, charsRead);
}


os.flush();
os.close()
sr.close();