[oracle]pl/sql --分页过程demo
这句sql能够用来查询一张表中的特定位置的记录
--查询的方法获取分页的语句
select *from
(select t1.*,rownum rn from (select *from books) t1 where rownum<=4)
where rn >2;
--使用分页写存储过程
create or replace package fenyepackage as
type fenye_cursor is ref cursor;
end fenyepackage;
create or replace procedure fenye(
tablename in varchar2, --表名
pagesize in number, --每页有多大
pagenow in number, --当前页
myrows out number, --总共多少记录
mypageconnt out number, --总共多少页
l_cursor out fenyepackage.fenye_cursor --游标
) is
--得到记录的開始和结束的位置
v_begin number:=(pagenow-1)*pagesize+1;
v_end number:=pagenow*pagesize;
v_sql varchar(1000);
begin
v_sql:='select bookid,bookname,pubhouse from (select t1.*,rownum rn from (select *from '||tablename||') t1 where rownum<='||v_end||')where rn >='||v_begin;
open l_cursor for v_sql;
v_sql:='select count(*) from '||tablename;
execute immediate v_sql into myrows;
if mod(myrows,pagesize)=0 then
mypageconnt:=myrows/pagesize;
else
mypageconnt:=myrows/pagesize+1;
end if;
--close l_cursor;
end;
create or replace procedure fenyeceshi(
tablename in varchar2,pagesize in number,pagenow in number) is
v_myrows number;
v_mypagecount number;
v_bookid books.bookid%type;
v_bookname books.bookname%type;
v_pubhouse books.pubhouse%type;
l_cursor fenyepackage.fenye_cursor;
begin
fenye(tablename,pagesize,pagenow,v_myrows,v_mypagecount,l_cursor);
--使用循环读出特定页的记录
loop
fetch l_cursor into v_bookid,v_bookname,v_pubhouse;
--not found要连在一起写
exit when l_cursor%notfound;
dbms_output.put_line('图书ID是:'||v_bookid||' 名称是:'||v_bookname||' 出版社是'||v_pubhouse);
end loop;
dbms_output.put_line('总的记录为:'||v_myrows||'条');
dbms_output.put_line('总的页数为:'||v_mypagecount||'页');
end;
SQL> exec fenyeceshi('books',2,2);
图书ID是:3 名称是:angle 出版社是20
图书ID是:4 名称是:anglele 出版社是10
总的记录为:4条
总的页数为:2页
PL/SQL procedure successfully completed
??: 这样是能得到结果,可是主过程中对于游标是否关闭非常疑惑 没有关闭的情况下是正常的,关闭了的话会出错 这个问题,待后面解决?
SQL> exec fenyeceshi('books',2,2); begin fenyeceshi('books',2,2); end; ORA-01001: 无效的游标 ORA-06512: 在 "SCOTT.FENYECESHI", line 12 ORA-06512: 在 line 2
本文出自 “orangleliu笔记本” 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309427
[oracle]pl/sql --分页过程demo的更多相关文章
- 二十六、oracle pl/sql 分页
一.无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程. 案例:现有一张表book, ...
- oracle pl/sql 分页
一.无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程. 案例:现有一张表book, ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- oracle15 pl/sql 分页
PL/SQL分页 编写分页过程 无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程: ...
- ORACLE PL/SQL编程之八:把触发器说透
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
- ORACLE PL/SQL编程详解(转)
原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语 ...
- ORACLE PL/SQL:触发器
ORACLE PL/SQL 触发器 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8 ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
随机推荐
- iOS学习笔记39-ReactiveCocoa入门
FRP,全称为Functional Reactive Programming,是一种响应变化的编程范式,最近几年比较火,大概的理解就像这样: 当a的值或者b的值发生变化时,c的值会自动响应a的值或b的 ...
- 重置css样式
如果有第三方插件或者想要覆盖css的样式的话,给他的样式设置auto就好了
- 完全平方数(bzoj 2440)
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...
- JS判断SharePoint页面编辑状态
这篇博客主要讲使用不同的客户端方式来判断页面的编辑模式. 1.当页面处于发布状态时,可以使用下面两种方式:if(g_disableCheckoutInEditMode == true) { ale ...
- 标准C程序设计七---111
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- poj 1274(网络流解二分图的最大匹配)
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22539 Accepted: 100 ...
- 富文本ZSSRichTextEditor之趟坑集锦
富文本ZSSRichTextEditor是iOS原生与网页交互的集大成者,各种交互.自然问题也是多多,这篇文文章陆续更新遇到的奇葩问题. 1.问题1:从头条这种文章里头复制粘贴的文章,里边有图片,我们 ...
- codevs——1008 选数
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知 n ...
- 构建伪Update服务器工具isr-evilgrade
构建伪Update服务器工具isr-evilgrade 现在大部分软件都提供更新功能.软件一旦运行,就自动检查对应的Update服务器.如果发现新版本,就会提示用户,并进行下载和安装.而用户往往相 ...
- Codeforces Round #321 (Div. 2) Kefa and Company 二分
原题链接:http://codeforces.com/contest/580/problem/B 题意: 给你一个集合,集合中的每个元素有两个属性,$m_i,s_i$,让你求个子集合,使得集合中的最大 ...