首先一定要连接数据库啊
private static Connection conn;
static{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
实例一:
【
create or replace procedure selectEmp(emp_no in number,ename out varchar2,job out varchar2,sal out number,deptno out number) is
begin
select ename,job,sal,deptno into ename,job,sal,deptno from emp where empno=emp_no;
end selectEmp;
】
public static void procedure() throws SQLException{
CallableStatement cas=conn.prepareCall("{call selectEmp(?,?,?,?,?)}");
int index = 1;
cas.setInt(index++, 7369);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
boolean flag=cas.execute();
System.out.println(flag);
if(!flag){
String ename=cas.getString(2);
String job=cas.getString(3);
int sal=cas.getInt(4);
int deptno=cas.getInt(5);
System.out.println(ename);
System.out.println(job);
System.out.println(sal);
System.out.println(deptno);
}
}
实例二:
【
通过包声明一个存储过程
create or replace package emppackage is
type empcursor is ref cursor;
procedure selectEmps(emplist out empcursor);
end emppackage;
包体:
create or replace package body emppackage is
procedure selectEmps(emplist out empcursor) is
begin
open emplist for select * from emp;
end;
end emppackage;
】
public static void testProcedure() throws SQLException{
CallableStatement cas=conn.prepareCall("{call emppackage.selectEmps(?)}");
int index = 1;
cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.CURSOR);
boolean flag=cas.execute();
System.out.println(flag);
ResultSet rs = ((OracleCallableStatement)cas).getCursor(1);
while(rs.next()){
System.out.println(rs.getInt(1));
}
}