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.无返回值 ...
随机推荐
- java简易excel导入导出工具(封装POI)
Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...
- "回车"(carriage return)和"换行"(line feed)
“回车”(carriage return)和“换行”(line feed)这两个概念的来历: 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10 ...
- sublime 空格 tab
sublime强大的编辑能力非常值得推荐.在编辑python语言时,因为python用段落格式取代了常见语言中的括号,所以在写python时.会将空格和tab混淆,如此产生的错误非常是恼人. 如17, ...
- python3----练习题(斐波那契)
def f1(a1,a2): if a1 > 100: return print(a1) a3 = a1 + a2 f1(a2, a3) f1(0,1) 练习:写函数,利用递归获取斐波那契数列中 ...
- util.inherits
util.inherits util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数. JavaScript 的面向对象特性是基于原型的 ...
- 一入python深似海--变量和对象
一.基本原理 Python中一切都是对象,变量是对象的引用. 这是一个普遍的法则.我们举个样例来说.Python是怎样来处理的. x = 'blue' y = 'green' z = x 当pytho ...
- Volley 源码分析
Volley 源码分析 图片分析 要说源码分析,我们得先看一下官方的配图: 从这张图中我们可以了解到 volley 工作流程: 1.请求加入优先队列 2.从缓存调度器中查看是否存在该请求,如果有(没有 ...
- springboot2.1.1 中集成websocket 单元测试异常
单元测试在没有集成websocket之前是好好的,当集成websocket之后就出现了下面的异常(只贴出来关键信息): 2019-01-11 10:05:42 [ERROR] [org.springf ...
- 第一只python爬虫
import urllib.request response = urllib.request.urlopen("http://www.baidu.com") html = res ...
- 3969 [Mz]平方和【斐波那契平方和】
3969 [Mz]平方和 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 斐波那契数列:f[0 ...