[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编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
随机推荐
- R语言处理1975-2011年的人口信息
1975-2011年的数据中. 1)分别统计每年人口最多的国家是哪个?有多少 2)统计出各个国家的1975-2011年的平均人口增长率 3)统计每年人口最多的十个国家 4)统计出每年人口最少的十个国家 ...
- Python之自动单元测试之一(unittest使用实例)
软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作.既然如此,为什么不让程序员在编写软 ...
- ACM程序设计选修课——1049: Efface Numbers(贪心)
1049: Efface Numbers Time Limit: 5 Sec Memory Limit: 128 MB Submit: 9 Solved: 4 [Submit][Status][W ...
- POJ3071 Football 【概率dp】
题目 Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, -, 2n. In eac ...
- 刷题总结———长跑路径(ssoj1982)
题目: 给定一个无向图···求特定几个点中两两间的最短路中的最小值····其中1≤N,M≤100000:T≤5:1≤K≤n:1≤边长≤100000,T为一个测试点的测试数··k为测试点数量 题解: 我 ...
- vue的过渡动画在除了chrome浏览器外的浏览器下不正常的问题
为过渡动画添加mode="out-in"在其它浏览器下面就能正常的使用了
- hdu 4932 BestCoder Round #4 1002
这题真是丧心病狂,引来今天的hack狂潮~ Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- 标准C程序设计七---70
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- C/C++程序编译运行过程分析(转载)
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母.符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容 ...
- 腾讯IM的那些坑
项目中接入腾讯IM,在这里记录下,以便大家解决问题时少走弯路 1.首先讲一下IM返回对象的问题: /** * 消息工厂方法 */ public static Message getMessage(TI ...