4

当我尝试将字符串数组扔给 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 = {???,???,???}

4

3 回答 3

10

在我的情况下(见我上面的评论),它是由编码问题引起的,但是 - 没有任何异常或调试信息。将 orai18n.jar 包含到项目库中解决了这个问题......真的很伤心,没有例外或表明如何解决问题的东西

于 2013-09-16T15:00:32.850 回答
1

几个小时后我找到了原因,真正的问题是您的数据库的 NLS_CHARACTERSET 使用您的客户端不支持的编码,jdbc 支持其他 NLS_LANG 必须在类路径中添加 orai18n.jar。使用此 sql 查看您的数据库设置:

选择 * 从 NLS_DATABASE_PARAMETERS

于 2014-03-06T12:23:05.493 回答
0

可能您的 STR_ARRAY 是这样定义的:

create or replace type STR_ARRAY is table of VARCHAR2(20);

正如托马斯所说,问题在于编码。我的解决方案 - 改用 NVARCHAR2 。

create or replace type STR_ARRAY is table of NVARCHAR2(20);

于 2014-05-09T14:17:39.443 回答