2011-08-25 79 views
0

我在MySql中有一個存儲過程的例子,我想用JDBC調用它。問題是,我得到以下錯誤:CallableStatement無法識別OUT參數

java.sql.SQLException: Parameter number 1 is not an OUT parameter 

存儲過程的定義是:

delimiter \\ 
create procedure get_average (
    out a decimal(8,2) 
) 
begin 
    select avg(grade) into a from students; 
end \\ 

正如你可以看到我有一個學生表,我計算平均值。當我在MySql中測試時,它工作正常。

Java代碼:

CallableStatement cstmt = con.prepareCall("call get_average(?)"); 
cstmt.registerOutParameter(1, java.sql.Types.DOUBLE); 
rs = cstmt.executeQuery(); 
double average = cstmt.getDouble(1); 

其中con是打開的連接。我究竟做錯了什麼?

+0

你嘗試'cstmt.registerOutParameter(1,java.sql.Types.DECIMAL);'了嗎? – emboss

+0

是的,我試過了。錯誤仍然發生。 –

+0

任何人?其他想法? ... –

回答

0

嘗試:

CallableStatement cstmt = con.prepareCall("{call get_average(?)}");