当我尝试将一个字符串数组抛出到oracle存储过程时:
String arrStr[] ={"val1","val2","val3"};
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("STR_ARRAY", connection );
oracle.sql.ARRAY oracleArray = new oracle.sql.ARRAY(descriptor, connection, arrStr);
oracleArray
包含空数据,oracleArray.datumArray = {???,???,???}
答案 0 :(得分:6)
在我的情况下(参见上面的评论),它是由编码问题引起的,但没有任何异常或调试信息。将orai18n.jar包含在项目库中解决了这个问题......真的很难过,没有例外或者说明如何解决问题
答案 1 :(得分:0)
数小时后我创建了原因,真正的问题是数据库的NLS_CHARACTERSET使用客户端不支持的编码,jdbc支持其他NLS_LANG必须在classpath中添加orai18n.jar。使用此sql查看数据库设置:
SELECT * FROM NLS_DATABASE_PARAMETERS
答案 2 :(得分:0)
可能你的STR_ARRAY是这样定义的:
create or replace type STR_ARRAY is table of VARCHAR2(20);
正如Tomas所说,问题在于编码。我的解决方案 - 改为使用NVARCHAR2。
create or replace type STR_ARRAY is table of NVARCHAR2(20);