Convert LONG RAW to VARCHAR2 in Oracle
Here is the script to convert LONG RAW data to VARCHAR2.
DECLARE
v_text VARCHAR2 (32000) := '';
BEGIN
FOR i IN (SELECT long_raw_column FROM long_raw_table)
LOOP
v_text := UTL_RAW.CAST_TO_VARCHAR2 (i.MESSAGE);
DBMS_OUTPUT.put_line (v_text);
END LOOP;
END;
Convert BLOB to CLOB using Java
In one of my testing I need CLOB data, but it was in BLOB, so I have used Java to convert but if any used in Oracle?.
package com;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.util.JDBCUtil;
/**
* The class is used to convert BLOB column values to CLOB column.
*
* @author Manivel
* @see java.sql.Blob
*/
public class ConvertBlobToClob {
public static void main(String[] args) {
Statement stmt;
PreparedStatement pstmt;
ResultSet rs;
Connection conn;
int messageId;
Blob message;
try {
conn = JDBCUtil.getJDBCConnection();
stmt = conn.createStatement();
/*
* messages : message_id is clob column
*/
pstmt = conn.prepareStatement("INSERT INTO messages (message_id, message) VALUES (?,?)");
/*
* messages_blob : message is blob column
*/
rs = stmt.executeQuery("select message_id, message from messages_blob");
while (rs.next()) {
messageId = rs.getInt(1);
message = rs.getBlob(2);
int offset = -1;
int chunkSize = 1024;
long blobLength = message.length();
if (chunkSize > blobLength) {
chunkSize = (int) blobLength;
}
char buffer[] = new char[chunkSize];
StringBuilder stringBuffer = new StringBuilder();
Reader reader = new InputStreamReader(message.getBinaryStream());
while ((offset = reader.read(buffer)) != -1) {
stringBuffer.append(buffer, 0, offset);
}
pstmt.setInt(1, messageId);
pstmt.setString(2, stringBuffer.toString());
pstmt.executeUpdate();
System.out.println("Success :" + messageId);
}
} catch (SQLException e) {
System.err.println(e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
}
JDBCUtil.java
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author manivel
*
*/
public class JDBCUtil {
final static String jdbcDriver = "oracle.jdbc.driver.OracleDriver";
/*
private static String strHostName = "localhost";
private static String strDBSID = "orcl";
private static String strPortNo = "1521";
*/
private static String strUserName = "scott";
private static String strPassword = "tiger";
private static String tnsName = "ORCL";
private static Connection connection = null;
/**
*
* @return
*/
public static Connection getJDBCConnection() {
try {
if (connection == null || connection.isClosed()) {
/*
String strURL = (new StringBuilder())
.append("jdbc:oracle:thin:@//").append(strHostName)
.append(":").append(strPortNo).append("/")
.append(strDBSID).toString();
*/
String strURL = (new StringBuilder())
.append("jdbc:oracle:oci8:@").append(tnsName).toString();
Class.forName(jdbcDriver);
connection = DriverManager.getConnection(strURL, strUserName,
strPassword);
}
} catch (ClassNotFoundException e) {
System.err.println(e.getMessage());
e.printStackTrace();
} catch (SQLException e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
return connection;
}
}
Copyright - There is no copyright on the code. You can copy, change and distribute it freely. Just mentioning this site should be fair
(C) August 2008, manivelcode