関数を実行するときにjavaからパッケージに定義されたデータ型にアクセスしたい。助けてください。JavaからのOracleデータ型へのアクセス
パッケージと機能:
create or replace package types as
TYPE name_array IS VARRAY(100000) OF VARCHAR2(200);
end types;
create or replace function test_pack1 return types.name_array as
names types.name_array := types.name_array();
begin
for emp in (Select state from test where test_ID BETWEEN 1 AND 120000) loop
names.extend;
names(names.count) := emp.state;
end loop;
return names;
end test_pack1;
のJavaコードの上で
cstmt = (OracleCallableStatement) con.prepareCall("begin ? :=test_pack1; end;");
cstmt.registerOutParameter(1, OracleTypes.ARRAY,"NAME_ARRAY");
cstmt.execute();
私は2番目の行でエラーを取得しています。 ます。java.sql.SQLException:無効な名前パターン:以下 のErr MSG我々は、Javaからの例外上記の投げを実行しようとすると、xyz.NAME_ARRAY
機能は、Oracle successfully.Butで実行なっています。
私自身、このトピックに関する専門家検討しますが、しません:あなたの代わりにNAME_ARRAYのARRAYを使用した場合はどうなりますか? – PhilW
私はエキスパートではありませんが、あなたのJavaコードにはパッケージ名がありません - cstmt.registerOutParameter(1、OracleTypes.ARRAY、 "types.NAME_ARRAY"); ? –
@ダビダ。私はこれを試しても動作していません... – Chandran