在java中调用存储过程_在java中调用存储过程

在java中调用存储过程: 一、只返回一个数值 1.存储过程 create or replace procedure getCount(a in number,                                      b in number,                                      c out number) is   sql_str varchar2(100); begin   sql_str := 'select ' || a || '+' || b || 'into: c from dual';   execute immediate sql_str     into c;   dbms_output.put_line(sql_str); end getCount; 2.java中取值 Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@127.0.0.1:1521:lubby"; Connection conn = DriverManager.getConnection(url, "admin", "admin"); CallableStatement cs = conn.prepareCall("{call GETCOUNT(?,?,?)}"); cs.setFloat(1, 33); cs.setFloat(2,33); cs.registerOutParameter(3, oracle.jdbc.OracleTypes.FLOAT); cs.execute(); System.out.println(cs.getInt(3)); 二、返回结果集的 1.存储过程: create or replace procedure getinfo(param_row  in number,                                     param_size in number,                                     out_count  out number,                                     out_list   out sys_refcursor) is   sql_str       varchar2(250);   sql_count_str varchar2(250); begin   --求总数   sql_count_str := 'select count(*) from info ';   --求结果集   if param_row is not null and param_size is not null then     sql_str := 'select rownum rn,t1.* from info t1 where 1=1 and rownum <=' ||                param_row * param_size;     sql_str := 'select * from (' || sql_str || ') t2 where 1=1 and t2.rn >' ||                (param_row - 1) * param_size;   end if;   --输出查询语句   dbms_output.put_line(sql_str);   dbms_output.put_line(sql_count_str);   --返回结果集和总数   execute immediate sql_count_str     into out_count;   open out_list for sql_str; end getinfo; 2.java中取结果集 public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@127.0.0.1:1521:lubby"; Connection conn = DriverManager.getConnection(url, "admin", "admin"); CallableStatement procedure = conn.prepareCall("{call getinfo(?,?,?,?)}"); procedure.setInt(1, 1); procedure.setInt(2, 10); procedure.registerOutParameter(3, OracleTypes.FLOAT); procedure.registerOutParameter(4, OracleTypes.CURSOR); procedure.execute(); Integer count = 0; count = procedure.getInt(3); System.out.println("count is " + count); ResultSet rs = (ResultSet) procedure.getObject(4); while(rs.next()){ System.out.println("id:" + rs.getInt(1)); System.out.println("bussiness:" + rs.getString(2)); System.out.println("customer:" + rs.getString(3)); System.out.println("brand:" + rs.getString(4)); } }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值