(1)返回数组:
新建数组类型,此处以nested table类型的数组举例:create or replace type XH is table of varchar2(32);
程序调用如下:filterAuditGraduation函数返回XH类型数组,程序调用得到返回的varchar数组。
1 Connection conn = null; 2 OracleCallableStatement stmt = null; 3 Class.forName("oracle.jdbc.OracleDriver"); 4 conn = DriverManager.getConnection("jdbc:oracle:thin:@202.96.28.250:1521:test", "new_prd", "heerTOccmu8"); 5 stmt = (OracleCallableStatement) conn.prepareCall("begin ?:= pkg_cj_jw_graduation.filterAuditByZy('"+id+"'); end;"); 6 stmt.registerOutParameter(1, OracleTypes.ARRAY, "XH"); 7 stmt.execute(); 8 ARRAY simpleArray = stmt.getARRAY(1); 9 Datum[] datas=simpleArray.getOracleArray(); 10 StringBuffer xhs = new StringBuffer(""); 11 for (int i = 0; i < datas.length; i++){ 12 String xh = new String(datas[i].shareBytes()); 13 if(i == (datas.length - 1)) xhs.append(xh); 14 else xhs.append(xh +","); 15 }
(2)返回游标:
返回sys_refcursor
程序调用在上面的基础上修改如下:
stmt.registerOutParameter (1, OracleTypes.CURSOR);
stmt.setString (1, "1234");
stmt.execute ();
ResultSet rset = (ResultSet)stmt.getObject (1);
while (rset.next ())
System.out.println (rset.getString ("EName"));
rset.close();
call.close();
conn.close();