创建ORCLE存储过程含有一个输出游标参数和输出整型参数(实现对表的分页效果)

本文介绍了一种使用Oracle存储过程实现表数据分页的方法。通过定义输出游标和计数器,可以有效地从指定表中获取特定范围的数据,并计算总的记录数。示例中展示了如何为DEPT表创建分页存储过程并执行。
 

创建ORCLE存储过程含有一个输出游标参数和输出整型参数(实现对表的分页效果)
CREATE OR REPLACE PROCEDURE proc_searchTab(tablename varchar2,startline number,endline number,emp_cur out

sys_refcursor,counter out NUMBER)
as

str1 varchar2(1024) :='select * from
(select rownum r,e.* from '||tablename||' e) t where t.r between '|| startline || ' and '|| endline;

str2 VARCHAR2(1024) :='SELECT COUNT(1) FROM '||tablename;
BEGIN
 open emp_cur for str1;
 EXECUTE IMMEDIATE str2 INTO counter;
COMMIT;
EXCEPTION
 WHEN OTHERS THEN
 DBMS_OUTPUT.PUT_LINE(SQLERRM);--SQLERRM(返回当前的错误信息文本)
 ROLLBACK;
END proc_searchTab;
/
用PLsql块执行上面创建的过程
SET SERVEROUTPUT ON ;
declare
 TYPE emp_record is RECORD(  --定义一个记录类型
  s number, 
  v_deptno dept.deptno%type, --dept 代表数据库中的表名(即存储过程输入参数表名)
  v_dname dept.dname%type,
  v_loc dept.loc%type
 );
 counter number;    --定义一个输出参数(表的总记录数)
 dept_cur sys_refcursor;   --定义一个游标
 dept_rr emp_record ;
begin
 PROC_SEARCHTAB('dept',2,3,dept_cur,counter);
 loop
  fetch dept_cur into dept_rr;
  exit when dept_cur%notfound;
  dbms_output.put_line(dept_rr.s||'---'|| dept_rr.v_deptno);
 end loop;
 dbms_output.put_line('总行数-->'||counter);
 close dept_cur;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值