我已經完成下面的示例JDBC程序,它檢索用戶details.Now我感到驚訝,從相同的可調用語句我得到不同的結果集爲相同的輸出參數index.Ideally它應該返回相同的ResultSet對象。線程「主」中的異常java.sql.SQLException:缺少定義
- 當我得到了結果集那麼我移動光標-1 0
- 我是從另一個結果集檢索數據使用 列名相同的輸出PARAM然後我得到以下異常
,
異常在線程 「主要」 值java.sql.SQLException:缺少定義
System.out.println("Before loading connection");
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@170.45.3.165:1541/testdb.mycomp.com",
"admin", "admin123");
System.out.println("Connection loaded " + connection);
CallableStatement callProcedure = connection
.prepareCall("{call ADMIN_USER.Fetch_User_Details(?,?)}");
callProcedure.setString(1, "userid=testid");
callProcedure.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
callProcedure.execute();
ResultSet resultUserDetails = (ResultSet) callProcedure.getObject(2);
resultUserDetails.next();
ResultSet resultUserDetails1 = (ResultSet) callProcedure.getObject(2);
String username = resultUserDetails1.getString(COL_NAME_USER_NAME);
System.out.println(resultUserDetails);
System.out.println(resultUserDetails1);
System.out.println(resultUserDetails == resultUserDetails1);
任何人都可以有任何想法,爲什麼我們從可調用語句獲得兩個不同的結果集爲相同的輸出索引?
數據庫具體方法也是允許的(您不使用JDBC'call'逃逸必需的。['CALL'](http://docs.oracle。 COM/CD/E11882_01/server.112/e26088/statements_4008.htm#BABDEHHG)是執行存儲過程 –