第一步: 声明包,游标,过程
CREATE OR REPLACE PACKAGE "PACK_ACCT_BJK" AS
Type refcur is Ref Cursor;
procedure getAcctByOrgByBJK(org_a IN
INTEGER,refcursor OUT
osibank.PACK_ACCT_BJK.refcur);
END PACK_ACCT_BJK;
第二部:定义body
CREATE OR REPLACE PACKAGE BODY "PACK_ACCT_BJK" AS
procedure getAcctByOrgByBJK(
org_a IN INTEGER,
refcursor OUT
osibank.PACK_ACCT_BJK.refcur)
as
begin
OPEN REFCURSOR FOR
select * from acct where
branchorgnbr=org_a;
END getAcctByOrgByBJK;
END PACK_ACCT_BJK;
第三步:java测试程序如下
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl =
"jdbc:oracle:thin:@192.168.1.6:1521:debug";
Statement stmt =
null;
ResultSet rs =
null;
Connection conn =
null;
CallableStatement cstmt =
null;
long a = 67500202L;
try {
Class.forName(driver);
conn =
DriverManager.getConnection(strUrl, "osibank", "osibank");
CallableStatement proc = null;
proc =
conn.prepareCall("{ call
osibank.PACK_ACCT_BJK.getAcctByOrgByBJK(?,?) }");
proc.setLong(1, a);
proc.registerOutParameter(2,
OracleTypes.CURSOR);
proc.execute();
//System.out.println("branchorg:"+proc.getInt(2));
rs =
(ResultSet)proc.getObject(2);
while(rs.next())
{
System.out.println("acctnbr:"
+ rs.getLong("acctnbr") + "
datelastcontact:"+rs.getDate("datelastcontact"));
}
}
catch (SQLException ex2)
{
ex2.printStackTrace();
}
catch (Exception ex2)
{
ex2.printStackTrace();
}
finally{
try
{
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch
(SQLException ex1) {
}
}
}