2

ストアド プロシージャから参照カーソルを返そうとすると、常にjava.sql.SQLException: Bigger type length than Maximumエラーが発生するという問題が発生しています。

参照カーソルとして出力変数を 1 つだけ持つ非常に単純なストアド プロシージャがあります。ref_cursor は、WS_SEARCHTEST という名前の Oracle パッケージで型参照カーソルとして定義されています。

CREATE OR REPLACE PACKAGE DB.WS_SEARCHTEST
IS
TYPE ref_cursor IS REF CURSOR;

私の手順:

PROCEDURE searchTest(query_result OUT ref_cursor)
Is
Begin
   open query_result for select pay_id, member_id, group_no from member_table
where carrier_no = '7' AND group_no = '200607';
End;

簡単なクエリを実行し、データベースで確認したため、接続が機能していることはわかっています。私のJavaコードでは、次のことを行います。

callStmt = connection.prepareCall("{call WS_SEARCHTEST.searchTest(?)}");
callStmt.registerOutParameter(1, OracleTypes.CURSOR);
callStmt.execute();
resultSet = (ResultSet) callStmt.getObject(1);

私も試しました:

 resultSet = callStmt.executeUpdate();    

 resultSet = callStmt.executeQuery();

ただし、結果セットにアクセスしようとすると、常に java.sql.SQLException: Bigger type length than Maximum が発生します。

ありがとう

4

1 に答える 1