今天写的这个是在java语言中调用oracle的储存过程,
首先先建一个储存过程
Createor replace procedure selectemp(eid number,empname out varchar,empsal outnumber)
As
begin
Selectename,sal into empname,empsal from emp where empno=eid;
End;
然后是java程序
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importoracle.jdbc.OracleCallableStatement;
publicclass TestOracle {
private static Connection conn;
static {
try {
// 第一步:加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 得到连接对象
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl","test", "test");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throwsSQLException {
// 参数 in out参数 通过站位符号
CallableStatement cas = conn.prepareCall("{callselectemp(?,?,?)}");
// 从1开始
int index = 1;
// 为占位符赋值
cas.setInt(index++, 7369);
// 输出参数
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
cas.registerOutParameter(index++,oracle.jdbc.OracleTypes.NUMBER);
// 执行操作 Resulset rs rs true |false
boolean flag = cas.execute();
// 判断
if (!flag) {
String name = cas.getString(2);
int sal = cas.getInt(3);
System.out.println(name);
System.out.println(sal);
}
}