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);

oracleArraynull データを保持します。oracleArray.datumArray = {???,???,???}

4

3 に答える 3

10

私の場合(上記のコメントを参照)、エンコードの問題が原因でしたが、例外やデバッグ情報はありませんでした。プロジェクトライブラリに orai18n.jar を含めることでこれが解決しました...それは本当に悲しいことです。例外や問題の解決方法を示すものはありません

于 2013-09-16T15:00:32.850 に答える
1

何時間もかけて原因を突き止めた後、実際の問題は、データベースの NLS_CHARACTERSET がクライアントでサポートされていないエンコーディングを使用していることです。jdbc をサポートするには、他の NLS_LANG がクラスパスに orai18n.jar を追加する必要があります。次の sql を使用してデータベースの設定を確認します。

SELECT * NLS_DATABASE_PARAMETERS から

于 2014-03-06T12:23:05.493 に答える
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);

于 2014-05-09T14:17:39.443 に答える