[跟着hsp步步学习系统]oracle培训学习集锦全360度扫描(10)一个分页存储过程

第四十讲
在java中调用有返回值的存储过程
step 1
create or replace pakcage pack1
is
--定义一个游标数据类型
type my_cursor is ref cursor;
end;
step 2
create or replace procedure pro1(v_in_deptno in number,v_out_result out pack1.my_cursor)
is
begin
open v_out_result for select * from emp where detno=v_in_deptno;
--不能此时关游标,因为 java程序要使用的close v_out_result;
end;
step 3
java 代码
cs=ct.prepareCall("{call pro1(?,?)}");
cs.setInt(1,10);
cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
rs=(ResultSet)cs.getObject(2);//--关键
while(rs.next()){
system.out.
}
2.分页的存储过程
要求输入表名,每页显示记录数,当前页,返回回的结果 集
--建包,使用游标
create package pack1 is
type my_cursor is ref cursor;
end;
--编写过程
create or replace procedure fengyePro(v_in_table in varchar2,v_in_pagesize in number,v_in_pageNow in number,v_out_result out pack1.my_cursor)
is
--定义变量
v_sql varchar2(2000);
v_start number;
v_end number;
--回忆分页语句
begin
--执行代码
--计算v_start和v_end是多少
v_start:=v_in_pagesize*(v_in_pagenow-1)+1;
v_end:=v_in_pagesize*v_in_pageno2;
v_sql:='select t2.*,rownum from (select t1.*,rownum rn from (select * from '||v_in_table||' t1) where rownum<=9 where rownum<='||v_end||') t2 where rn>='||v_start;
open v_out_result for v_sql;
end;


java 中
cs=ct.prepareCall("{call fengyePro(?,?,?,?)}");
cs.setString(1,"emp");
cs.setInt(2,3);

cs.setInt(3,1);


_________________________________________________________________________________________

第四十一讲
对分页类进行扩展
增加共有多少页,共有多少条
create or replace procedure fengyePro2(v_in_table in varchar2,v_in_pagesize in number,v_in_pageNow in number,v_out_result out pack1.my_cursor,v_out_rows out number,v_out_pageCount out number)
is
--定义变量
v_sql varchar2(2000);
v_start number;
v_end number;
--回忆分页语句
begin
--执行代码
--计算v_start和v_end是多少
v_start:=v_in_pagesize*(v_in_pagenow-1)+1;
v_end:=v_in_pagesize*v_in_pageno2;
v_sql:='select t2.*,rownum from (select t1.*,rownum rn from (select * from '||v_in_table||' t1) where rownum<=9 where rownum<='||v_end||') t2 where rn>='||v_start;
open v_out_result for v_sql;
--查询共有多少纪条
select count(*) into v_out_rows from emp;
if mod(v_out_rows,v_in_pagesize)=0 then
v_out_pagecount:=v_out_rows/v_n_pagesize;
else
v_out_pagecount:=v_out_rows/v_in_pagesize+1;
end if;
end;


此时在java中新增的一个返回多少条,要这样写
cs.registerOutParameter(5,oracle.jdbc.OracleTypes.Integer);
cs........(6,or.Ingeter)


2.视图
with read only
只能读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值