Java基礎知識:Java中調用存儲過程或函數1
CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");
第一個?表示返回的值,后面的?可以是輸入參數,也可以是輸出參數。
第一個?是返回參數,所以必須有語句:
connection.registerOutParameter(1, Types.VARCHAR);(Types.varchar是類型)
后面的?如果是輸出參數,應該也加上registerOutParameter語句:
connection.registerOutParameter(2, Types.VARCHAR);(2是第2個占位符,Types.varchar是類型)
最后打印輸出的結果:
System.out.println(cs.getString(1)); (1是對應輸出參數,第一個輸出參數)
2.調用存儲過程
CallableStatement cs=con.prepareCall("{call stu_pro(?,?,?)}");(與函數的區別是:沒有?=)
java程序中要打印調用過程獲得的值,需調用有輸出參數的存儲過程,用法和調用函數一樣。
3.簡單例子
[java]
package com.dgy.app;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class OraclePro {
/**
* 連接數據庫
*/
public static Connection getConnection(){
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@PC-200911181406:1521:dgy";
String user = "dwj";
String pwd = "dwj";
con = DriverManager.getConnection(url,user,pwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}