テーブルの Oracle Blob フィールドに byte[] 配列を挿入しようとしている Java ストアド プロシージャがあります。
次のように準備済みステートメントを作成しますが、準備済みステートメントを実行するとランダムに失敗します。問題が pstmt.setBytes(4,content) から発生していることを絞り込みました。私が得るエラーは次のとおりです。
ORA-01460: 実装されていない、または不当な変換が要求されました。
private static void insertFile(Connection connOracle, int zipFileId, byte[] data, String filepath, String filename ) throws SQLException {
try {
String QUERY = "INSERT INTO files(file_id, zip_file_id, filename, file_path, content) VALUES(SEQ_FILE_ID.nextval,?,?,?,?)";
PreparedStatement pstmt = connOracle.prepareStatement(QUERY);
pstmt.setInt(1,zipFileId);
pstmt.setString(2, filename);
pstmt.setString(3, filepath);
pstmt.setBytes(4, data);
System.out.println("INSERTING file_id " + filepath + ", " + filename + " INTO DATABASE");
pstmt.execute();
pstmt.close();
}
catch (SQLException e) {
throw new SQLException(e.getMessage());
}