ストアド プロシージャから参照カーソルを返そうとすると、常に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 が発生します。
ありがとう