Java基礎(chǔ)知識:Java中調(diào)用存儲過程或函數(shù)1
CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");
第一個?表示返回的值,后面的?可以是輸入?yún)?shù),也可以是輸出參數(shù)。
第一個?是返回參數(shù),所以必須有語句:
connection.registerOutParameter(1, Types.VARCHAR);(Types.varchar是類型)
后面的?如果是輸出參數(shù),應(yīng)該也加上registerOutParameter語句:
connection.registerOutParameter(2, Types.VARCHAR);(2是第2個占位符,Types.varchar是類型)
最后打印輸出的結(jié)果:
System.out.println(cs.getString(1)); (1是對應(yīng)輸出參數(shù),第一個輸出參數(shù))
2.調(diào)用存儲過程
CallableStatement cs=con.prepareCall("{call stu_pro(?,?,?)}");(與函數(shù)的區(qū)別是:沒有?=)
java程序中要打印調(diào)用過程獲得的值,需調(diào)用有輸出參數(shù)的存儲過程,用法和調(diào)用函數(shù)一樣。
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 {
/**
* 連接數(shù)據(jù)庫
*/
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();
}