当我尝试将字符串数组抛给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 ={?,?}
发布于 2013-09-16 23:00:33
在我的例子中(参见上面的评论),它是由编码问题引起的-没有任何异常或调试信息。将orai18n.jar包含到项目库中解决了这个问题……这真的很可悲,没有例外,也没有什么能说明如何解决这个问题。
发布于 2014-03-06 20:23:05
几个小时后我找到了原因,真正的问题是你的数据库的NLS_CHARACTERSET使用的编码不被你的客户端支持,为了支持其他NLS_LANG,有必要在类路径中添加orai18n.jar。使用此sql查看您的数据库设置:
SELECT * FROM NLS_DATABASE_PARAMETERS
发布于 2014-05-09 22:17:39
您的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);
https://stackoverflow.com/questions/14998299
复制相似问题