我有一个sql数据类型'ty_order',其中包含一些id,string等...以及 blob 。数据类型用于避免程序头具有15个以上的参数。
在java中,我执行以下操作:
byte[] bytes = ...;
OracleConnection c = ...;
OracleCallableStatement stmt = ... ;
StructDescriptor orderDescriptor = StructDescriptor.createDescriptor('ty_order', c);
List<Object> elements = new ArrayList<Object>();
BLOB blob = new BLOB((OracleConnection) c, bytes.clone());
// put some other stuff into elements
elements.add(blob);
STRUCT order = new STRUCT(orderDescriptor, c, elements.toArray());
stmt.registerOutParameter(1, OracleTypes.BIGINT);
stmt.setSTRUCT(2, order);
stmt.execute();
相应的pl / sql过程解压缩结构并将所有内容插入表中。但是,插入 blob 会以我的方式抛出SQLException:
java.sql.SQLException: ORA-24812: character set conversion to or from UCS2 failed
我已经确认,异常的原因是插入 blob 。任何人都可以建议此错误的来源吗?