DBMS_LOB.COPY (
  dest_lob    IN OUT NOCOPY BLOB,
  src_lob     IN            BLOB,
  amount      IN            INTEGER,
  dest_offset IN            INTEGER := 1,
  src_offset  IN            INTEGER := 1);
例子:
CREATE OR REPLACE PROCEDURE Example_3a IS
    lobd, lobs     BLOB; 
    dest_offset    INTEGER := 1
    src_offset     INTEGER := 1
    amt            INTEGER := 3000;
BEGIN
    SELECT b_col INTO lobd
        FROM lob_table
        WHERE key_value = 12 FOR UPDATE;
    SELECT b_col INTO lobs
        FROM lob_table
        WHERE key_value = 21;
    DBMS_LOB.COPY(lobd, lobs, amt, dest_offset, src_offset);
    COMMIT;
   EXCEPTION
        WHEN some_exception
        THEN handle_exception;
END;

解决方案 »

  1.   

    public boolean setSbData(int id, String content)
    {
      boolean is=false;
      ResultSet rs=null;
      try {
          con();
          Connection con=jk.getConnection();
          Statement stmt=jk.getStatenment(con);
          con.setAutoCommit(false);
          String sql="insert into test values('"+id+"', empty_clob())";
          stmt.executeUpdate(sql);
          con.commit();
          sql="select content from test where id='"+id+"'for update";
          System.out.println(sql);
          rs=stmt.executeQuery(sql);
          if(rs.next())
          {
      oracle.sql.CLOB clob=(oracle.sql.CLOB) rs.getClob("content");
      clob.putString(1, content);
      sql="update test set content=? where id=" + id;
      PreparedStatement pstmt=con.prepareStatement(sql);
      pstmt.setClob(1, clob);
       is=true;
         }
         rs.close();
        }catch(Exception e){
        e.printStackTrace();
        is=false;
     }
       return is;
    }我这个为什么clob字段插不到数据库中去!
      

  2.   

    建议使用存储过程.
    http://expert.csdn.net/Expert/topic/2435/2435782.xml?temp=.9762079