Java基礎(chǔ)知識:Java中調(diào)用存儲過程或函數(shù)2
}
public static void main(String[] args) throws SQLException {
//System.out.println(OraclePro.getConnection());
Connection con=OraclePro.getConnection();
CallableStatement cs=con.prepareCall("{?=call get_pname}");//沒有參數(shù)的函數(shù)
cs.registerOutParameter(1, Types.VARCHAR);//第一個占位為輸出,類型是varchar
cs.execute(); //不能忘記execute()
System.out.println(cs.getString(1)); //打印輸出結(jié)果,對應(yīng)registerOutParameter
}
}
[java]
//有1個輸入?yún)?shù)的函數(shù)
CallableStatement cs=con.prepareCall("{?=call get_pname1(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2,25); //輸入?yún)?shù)是25
cs.execute();
//有1個輸出參數(shù)的函數(shù)
CallableStatement cs=con.prepareCall("{?=call get_pname2(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(2));
//上面兩個結(jié)果一樣,因為兩個意思是一樣的
//1個輸入?yún)?shù),1個輸出參數(shù)
CallableStatement cs=con.prepareCall("{?=call get_pname3(?,?)}");
//第1個是返回值,第2個是輸入?yún)?shù),第3個是輸出參數(shù)
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2, 25);
cs.registerOutParameter(3, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(3));
調(diào)用存儲過程與調(diào)用函數(shù)的方法一樣,就只是con.prepareCall("{call procedure(?,?)}")沒有?=.