先顶一个一个新的Object类型 emptype
create or replace type emptype as object ( eno number(4), ename varchar2(20) );
定义存储过程 返回一个远程游标 ref cursor
CREATE OR REPLACE PROCEDURE "PRO_ADD_EMP" (ref_cur out sys_refcursor) is emp emptype := emptype(11,'xxxx'); begin open ref_cur for select emp.eno,emp.ename from dual; end pro_add_emp;
String username = "scott"; String password = "tiger"; String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; String driver = "oracle.jdbc.driver.OracleDriver"; Class.forName(driver); Connection conn = DriverManager.getConnection(url,username,password); System.out.println(conn); CallableStatement cstmt = (OracleCallableStatement) conn.prepareCall("{call PRO_ADD_EMP(?) }"); cstmt.registerOutParameter(1, OracleTypes.CURSOR); cstmt.execute(); ResultSet rs = (ResultSet) cstmt.getObject(1); while(rs.next()){ System.out.println(rs.getString(1)); System.out.println(rs.getString(2)); }
返回一个 ResultSet 类型
ResultSet rs = (ResultSet) cstmt.getObject(1);