PL/SQL编程—分页功能(存储过程)

SQL> create table t_book(bookid varchar2(3),bookname varchar2(50),publish varchar2(50)); Table created SQL>
SQL> create or replace procedure sp_add_book(bookid in varchar2, bookname in varchar2,publish in varchar2) is
2 begin
3 insert into t_book values(bookid,bookname,publish);
4 end;
5 / Procedure created SQL> select * from t_book; BOOKID BOOKNAME PUBLISH
------ -------------------------------------------------- --------------------------------------------------
1 OracleTestForMine ShenZhenPublish

SQL> create or replace procedure sp_get_mytest(id_in in varchar2,name_out out varchar2,salary_out out number,bonus_out out number,job_out out varchar2) is
2 begin
3 select name,salary,bonus,job into name_out,salary_out,bonus_out,job_out from mytest where id=id_in;
4 end;
5 / Procedure created

SQL> create or replace package sp_pack_mulityqry as
2 type p_cursor is ref cursor;
3 end sp_pack_mulityqry;
4 / Package created



--创建一个游标类
create or replace package sp_pack_pagebycursor as
type p_cursor is ref cursor;
end sp_pack_pagebycursor;
/ --利用存储过程来实现分页功能
create or replace procedure fenye(
tablename in varchar2,
curpage in number,
pagerownum in number,
orderflg in varchar2,
totalrownum out number,
totalpagenum out number,
res_cursor out sp_pack_pagebycursor.p_cursor
) is
--定义sql语句变量
v_sql varchar2(1000);
--定义查询起始下标
v_begin_rownum number:=(curpage-1)*pagerownum+1;
--定义查询结束下表
v_end_rownum number:=curpage*pagerownum;
--执行
begin
--定义数据库查询sql
v_sql:='select * from (select t.*,rownum rn from (select * from '||tablename||' order by salary '||orderflg||') t where rownum<='||v_end_rownum||') where rn>='||v_begin_rownum;
--关联游标和sql
open res_cursor for v_sql;
--查询总记录数
v_sql:='select count(*) from '||tablename;
execute immediate v_sql into totalrownum;
--计算总页数
if mod(totalrownum,pagerownum)=0 then
totalpagenum:=totalrownum/pagerownum;
else
totalpagenum:=totalrownum/pagerownum+1;
end if;
end;
/


PL/SQL编程—分页功能(存储过程)的更多相关文章
- PL/SQL编程-介绍
pl/sql是一种编程语言,就像java一样java叫做高级编程语言 什么是编程,编程说到底就是对于数据的操作,数据包括数据库存储的和自己定义的变量常量等等数据,对他们进行逻辑化的处理 以实现特定的功 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- pl/sql编程
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
- ORACLE PL/SQL编程之八:把触发器说透
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- ORACLE PL/SQL编程详解(转)
原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语 ...
- PL/SQL编程急速上手
结构化查询语言(SQL)是第四代编程语言的典型,这种命令式的语言更像一种指令,使用它,你只需要告诉计算机“做什么”,而不用告诉计算机“怎么做”.第四代编程语言普遍具有简单.易学.能更快的投入生产等优点 ...
- Oracle基础(五)pl/sql进阶(分页过程)
编写分页过程 通过pl/sql实现分页过程,再该过程中由简单到难一步步深入,目的在于通过该案例熟悉pl/sql的各种存储过程,包,游标.怎样在java中调用等内容的学习. 1.无返回值 ...
随机推荐
- Meter and pixel units in a box2d game - LibGDX
http://pimentoso.blogspot.com/2013/01/meter-and-pixel-units-in-box2d-game.html 需FQ ————————————————— ...
- adb 安装apk到指定手机 登录shell
电脑链接多个设备时,给指定的设备安装apk, 1. 先查看手机的编码 adb devices 2. adb -s 手机编码 install xxx.apk 如果是无线链接调试状态,adb device ...
- 刚新建好的动态网站项目,创建jsp页面就报错
拿到刚刚可以运行的Eclipse,就马上想敲码了,但一创建项目之后再创建jsp页面就报错= =! 报错的内容大概为缺乏对应的jar包. 我们常用Tomcat为中间体,而他本身是带有开发jsp网站的对应 ...
- PHP 程序员面试常问的问题
1. Include 与 require的区别,require和require_once的效率哪个高? Php在遇到include时就解释一次,如果页面中出现10次include,php就解释10次, ...
- php检测非法字符方法
检测非法字符: [第一种]: 自己搞来玩的... 简单测试了下...暂无发现什么问题...日后再多测试下....日后再更>>>
- JavaScript------如何查看var变量是否是指定类型
function isArray(a) { //Date,Array,String,Object,Function,Boolean,Number return a.constructor.toStri ...
- linux用户与组管理命令的基本操作
用户账号管理命令 为了提高系统的利用率,避免因多个用户共用一个root账号而造成不必要要的系统安全隐患,通常需要为 新用户添加账户.在Linux系统中,添加用户只能由超级用户来完成,也就是说,只能由r ...
- 65、TextView 字体设置不同颜色 --- 未完
mTextView.setText(Html.fromHtml("教练评论" + "<font color='#b0b0b0'>" + " ...
- poj1699(状态压缩dp)
可能没有完全读懂题意. 个人觉得 acca aa 答案应该是4. 然后就是dp了..这题数据量小很多方法都可以,数据也水暴力据说都能过.. 还有就是我竟然没有用扩展kmp优化下... 太无耻了,我是因 ...
- FZU1465
题目链接:传送门 题目大意:给你n个整数(可正可负),求有多少个连续的子序列的和==m(时限1S) 题目思路:前缀和+手写hash(map效率太慢,会超时) 具体做法是用一个数组sum,数组的第i位保 ...