oracle 存储过程实现分页
用oracle数据库的存储过程实现返回结果集并实现分页的功能。
用户传入参数
一下是转别人的代码
--包声明
create or replace package p_page is
-- Author : PHARAOHS
-- Created : 2006-4-30 14:14:14
-- Purpose : 分页过程
TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集
PROCEDURE Pagination(
Pindex in number, --分页索引
Psize in number, --页面大小
Pcount out number, --返回分页总数
v_cur out type_cur --返回当前页数据记录
);
procedure PageRecordsCount(
Prcount out number --返回记录总数
);
end p_page;
--包体
create or replace package body p_page is
PROCEDURE Pagination(
Pindex in number,
Psize in number,
Pcount out number,
v_cur out type_cur
)
AS
Psql VARCHAR2(1000);
v_sql VARCHAR2(1000); --
v_count number;
v_Plow number;
v_Phei number;
Begin
Psql := 'select rownum rn,t.* from TABLE_NAME t' ; --选择数据的语句要求必须包含rownum字段
------------------------------------------------------------取分页总数
v_sql := 'select count(*) from (' || Psql || ')';
execute immediate v_sql into v_count;
Pcount := ceil(v_count/Psize);
------------------------------------------------------------显示任意页内容
v_Phei := Pindex * Psize + Psize;
&nb
相关文档:
1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN from BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
例如 ......
select owner,sum(bytes)/1024/1024 sum_MB
from dba_segments
where tablespace_name='USERS' and owner like 'ZJ%'
group by owner
order by 2 desc;
SET NEWPAGE NONE HEADING OFF SPACE 0 PAGESIZE 0 TRIMOUT ON TRIMSPOOL ON LINESIZE 25 ......
--创建序列
create sequence innerid
minvalue 1
maxvalue 999999999
start with 1
increment by 1
cache 20
order;
--创建表
create table users(
userid int primary key,
username varchar2(20),
userpwd varchar2(20)
);
select * from users;
insert into users values( ......
一。查看oracle数据库是否为归档模式:[1]
1.select name,log_mode from v$database;
NAME LOG_MODE
------------------ ------------------------
QUERY NOARCHIVELOG
2.使 ......