oracle学习-存储过程返回一个值,和返回一个结果集

返回一个值

创建存储过程

create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is
begin
select cname into spname from gb_customerinfo where ccode = spcode;
end;

java代码调用和接受返回值

public static void main(String[] arg) {
   try {
    //加载驱动
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //创建连接
    Connection cnn = DriverManager.getConnection(
      "jdbc:oracle:thin:@192.168.1.116:1521:cwerp",
      "hu_gbxt", "hu_gbxt");
    //创建CallableStatement
    CallableStatement cs = cnn.prepareCall("{call sp_hu_test(?,?)}");
    //给?号付值
    cs.setString(1, "082");
    cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
    //执行
    cs.execute();
    String cname = cs.getString(2);
    System.out.println("名字:" + cname);
    //关闭
    cs.close();
    cnn.close();
   } catch (Exception e) {
    e.printStackTrace();
   }

}
}

返回多个值

创建一个包,包里有个游标变量

create or replace package mypackage as
type sp_cursor is ref cursor;
end mypackage;

创建存储过程
create or replace procedure sp_proc(carcode in varchar2,sp_coesor out mypackage.sp_cursor)is
begin
open sp_coesor for select * from gb_truck where cardcode = carcode;
end;

//注解,这里面的输出参数是个游标类型

java调用存储过程

public static void main(String[] arg) {
   try {
    //加载驱动
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //创建连接
    Connection cnn = DriverManager.getConnection(
      "jdbc:oracle:thin:@192.168.1.116:1521:cwerp",
      "hu_gbxt", "hu_gbxt");
    //创建CallableStatement
      CallableStatement cs = cnn.prepareCall("{call sp_proc(?,?)}");
    cs.setString(1, "皖1958707");
    cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
    cs.execute();
    ResultSet rs = (ResultSet)cs.getObject(2);
    while(rs.next()){
     System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(4));
    }
    //关闭
    cs.close();
    cnn.close();
   } catch (Exception e) {
    e.printStackTrace();
   }

}
}


参考资料:http://blog.csdn.net/haxhunter/article/details/5685277

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值