转:Java调用Oracle中的Package

1、首先新建一个用于测试的表,以及Package 
create table student( 
id int primary key, 
name varchar2(20), 
age int, 
sex varchar2(10), 
address varchar2(200) 
); 

insert into student values(1,'Kik',21,'男','北京'); 
insert into student values(2,'Civil',20,'女','上海'); 
insert into student values(3,'lucas',17,'男','北京'); 
insert into student values(4,'Leos',18,'女','广州'); 

2、创建Oralce的Package用于查询学生信息 

--包的声明 
create or replace package pack_stu_test 
as 
procedure find_stu( 
          sid in int, --ID 
          sname out varchar2,--姓名 
          sage out int, --年龄 
          ssex out varchar2, --性别 
          saddress out varchar2 --地址 
          ); 
end pack_stu_test; 

--包体 
Create or replace package body pack_stu_test 
as 
procedure find_stu( 
          sid in int, --ID 
          sname out varchar2,--姓名 
          sage out int, --年龄 
          ssex out varchar2, --性别 
          saddress out varchar2 --地址 
  )as 
    v_id student.id%type; 
begin 
v_id:=sid; 
select name,age,sex,address into sname,sage,ssex,saddress from student where id = sid; 
end;   
end pack_stu_test; 

3、java代码实现 

Java代码   收藏代码
  1. public static void getAllStuInfo(int id) {  
  2.         Connection conn = null;  
  3.         CallableStatement stat = null;  
  4.         ResultSet rs = null;  
  5.           
  6.         try {  
  7.             conn = DbUtils.getConnection();  
  8.             stat = conn.prepareCall("{call pack_stu_test.find_stu(?,?,?,?,?)}");  
  9.             stat.setInt(1, id);  
  10.             stat.registerOutParameter(2, Types.VARCHAR);  
  11.             stat.registerOutParameter(3, Types.INTEGER);  
  12.             stat.registerOutParameter(4, Types.VARCHAR);  
  13.             stat.registerOutParameter(5, Types.VARCHAR);  
  14.             stat.executeQuery();  
  15.               
  16.             System.out.println(stat.getString(2));  
  17.             System.out.println(stat.getInt(3));  
  18.             System.out.println(stat.getString(4));  
  19.             System.out.println(stat.getString(5));  
  20.               
  21.         } catch (SQLException e) {  
  22.             e.printStackTrace();  
  23.         } finally{  
  24.             DbUtils.close(rs, stat, conn);  
  25.         }  
  26.     }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值