2

Java ランタイム環境から Oracle ストアド プロシージャを呼び出すのに最も苦労しています。私が呼び出しているストアド プロシージャには、1 つの入力と 1 つの出力の 2 つのパラメーターがあります。ストアド プロシージャを呼び出す方法は次のとおりです。Oracle ref_cursor から結果セットを取得するにはどうすればよいですか

                ds = (DataSource)initialContext.lookup("JDBC/EPCD13DB");
                conn = ds.getConnection();
                callableStatement = conn.prepareCall(storedProcCall);
                callableStatement.setString(1, input1);
                callableStatement.registerOutParameter(2, OracleTypes.CURSOR);                      
                callableStatement.execute();//(ResultSet) callableStatement.getObject(1);
                ResultSet rs = callableStatement.getResultSet();
                while(rs.next()){
                    Provider tempProv = new Provider();
                    tempProv.setResourceId(rs.getLong("res_id"));
                    tempProv.setFirstName(rs.getString("First_Name"));
                    tempProv.setLastName(rs.getString("Last_Name"));
                    tempProv.setMiddleName(rs.getString("Middle_Name"));
                    ObjList.add(tempProv);
                }
                rs.close();
4

4 に答える 4

3

次の方法で取得できるはずですResultSet

 ResultSet rSet = (ResultSet)callableStatement.getObject(2);
于 2012-10-22T16:36:01.453 に答える
0

1つの出力のみを返すと思います( oracle cursor)

            ResultSet rs=(ResultSet) callableStatement.getObject(2);

次に、内部のレコードに対してカーソルの結果セットを繰り返します。

           while(rs.next()){
                Provider tempProv = new Provider();
                tempProv.setResourceId(rs.getLong("res_id"));
                tempProv.setFirstName(rs.getString("First_Name"));
                tempProv.setLastName(rs.getString("Last_Name"));
                tempProv.setMiddleName(rs.getString("Middle_Name"));
                ObjList.add(tempProv);
            }
于 2012-10-22T16:48:07.930 に答える
0

これは役に立ちますか?結果セットを照会する前に、 getObject を呼び出して結果セットにキャストする必要があるようです。

クレジット:: http://www.mkyong.com/jdbc/jdbc-callablestatement-stored-procedure-cursor-example/

于 2012-10-22T16:37:13.313 に答える
0

Spring フレームワークでは、データベース カーソルの結果を簡単に取得できます。目的を果たすために、maprow、storedprocedure などのクラスが組み込まれています。PFB リンク

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jdbc.html#jdbc-simple-jdbc-call-1

于 2012-10-22T17:09:39.140 に答える