欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 调用oracle存储过程 存储过程java

程序员文章站 2022-04-23 08:37:09
...
1.java代码
public static void callProducre() throws Exception {
		Connection conn = getConn();
		String sql = "{call exportExcle(?,?,?,?)}";
		CallableStatement statement = conn.prepareCall(sql);
		// 设置输入参数
		statement.setLong(1, 1);
		statement.setLong(2, 1000);
		// 设置输出参数
		statement.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);
		statement.registerOutParameter(4, oracle.jdbc.OracleTypes.NUMBER);
		
		statement.execute();
		
		// 处理返回结果集
		ResultSet rs = (ResultSet)statement.getObject(3);
		int i=1;
		while (rs.next()) {
			System.out.println(rs.getString(1)+":"+rs.getString(2));
			i++;
		}
		rs.close();
		// 输出第4个值
		BigDecimal outParam2 = (BigDecimal)statement.getObject(4);
		System.out.println("输出第4个值:"+outParam2.toString());
		
		statement.close();
		conn.close();
		
	}

 2.存储过程

 

create or replace procedure exportExcle(startNum in number,endNum in number,out_cursor out sys_refcursor,totalNum out number)
as 
begin
  open out_cursor for 
SELECT * 
 FROM (SELECT tt.*, ROWNUM AS rowno 
 FROM (
select distinct info.tradeno from sc_ipay_pay pay,sc_ipay_prepayment_info info where pay.bill_id=info.billid and pay.amount=29.9
and pay.pay_status=1 and info.user_goods_name like '%药安心%' and to_char(pay.create_time,'yyyy-MM-dd')>='2019-07-07'
order by info.tradeno desc 
) tt
 WHERE ROWNUM < endNum) al
 WHERE al.rowno >= startNum;
 
 totalNum:= startNum+endNum;
end exportExcle;
 

 

相关标签: 存储过程 java