2012-08-22 37 views
1

我試圖從MYSQL過程中獲取參數。 我PROC:JDBC異常獲取存儲過程的小數點輸出參數

CREATE PROCEDURE proc(someIn INT UNSIGNED, 
         anotherIn INT UNSIGNED, 
         OUT x DECIMAL(10,7), 
         OUT y DECIMAL(10,7)) 

我的Java代碼:

CallableStatement cs = conn.prepareCall("{call proc(?, ?,?,?)}"); 
cs.setLong(1, someLong); 
cs.setLong(2, anotherLong); 
cs.registerOutParameter(3,Types.DECIMAL,7); 
cs.registerOutParameter(4,Types.DECIMAL,7); 
rs = cs.executeQuery(); 
if (rs.next()) { 
    double x = rs.getBigDecimal(3).doubleValue(); 
    double y = rs.getBigDecimal(4).doubleValue(); 
} 

我在遇到錯誤時調用rs.next():

值java.sql.SQLException:ResultSet是從UPDATE。沒有數據。

如果我手動調用具有相同參數的過程,我會得到結果數據。 我試圖將小數更改爲雙精度,但這沒有效果。

+0

盧卡斯是正確的。謝謝你,盧卡斯! –

回答

3

正確的方法調用過程是這樣的:

cs.execute(); 
double x = cs.getBigDecimal(3).doubleValue(); 
double y = cs.getBigDecimal(4).doubleValue();