JDBC-MYSQL-儲存函式和儲存過程的呼叫
阿新 • • 發佈:2019-02-12
最近要學習資料庫,在用JDBC呼叫儲存過程和儲存函式是出現了小麻煩。在MYSQL中,用JDBC呼叫儲存過程和儲存函式還是有一些不同的。
一,用JDBC呼叫儲存過程一般過程如下:
String sql = "call proc(?,?)";
CallableStatement cstmt = con.prepareCall(sql); //預處理
cstmt.setString(1, in); //設定輸入引數
cstmt.registerOutParameter(2,Types.INTEGER); //設定輸出引數
cstmt.execute(); //執行
二,用JDBC呼叫儲存函式
由於MYSQL的儲存函式沒有輸出引數,只有返回值,用上面的方法去呼叫儲存函式時會報錯,我用下面的方法獲取返回引數
String sql = "Select fun(?)";
CallableStatement cstmt = con.prepareCall(sql); //預處理
cstmt.setString(1, in); //設定輸入引數
cstmt.execute(); //執行
ResultSet rs=cstmt.getResultSet(); //通過結果集獲取儲存函式的返回引數
while(rs.next()){
System.out.println(rs.getObject(1));
}