LONG/LONG RAW 限單表一欄且上限 2GB,已逐漸被 LOB 取代。
CREATE TABLE test_clob (id INTEGER, content CLOB); CREATE TABLE test_blob (id INTEGER, data BLOB);
String sql = "INSERT INTO test_clob(id, content) VALUES (?, ?)"; conn.setAutoCommit(false); CLOB clob = CLOB.createTemporary((OracleConnection)conn, true, CLOB.DURATION_SESSION); clob.setString(1, "大量文字內容..."); OraclePreparedStatement pstmt = (OraclePreparedStatement)conn.prepareStatement(sql); pstmt.setInt(1, 1); pstmt.setClob(2, clob); pstmt.executeUpdate(); pstmt.close(); conn.commit();
String sql = "UPDATE test_clob SET content = ? WHERE id = 1"; CLOB clob = CLOB.createTemporary((OracleConnection)conn, true, CLOB.DURATION_SESSION); clob.setString(1, "更新後的內容..."); OraclePreparedStatement pstmt = (OraclePreparedStatement)conn.prepareStatement(sql); pstmt.setClob(1, clob); pstmt.executeUpdate(); pstmt.close(); conn.commit();
oracle.sql.*、oracle.jdbc.driver.*OraclePreparedStatement 並呼叫 setClob/setBlobgetAsciiStream/setBinaryStream) 避免記憶體溢位