Oracle ——存储过程——分页

输入:表名、每页显示的记录数、当前页
输出:总记录数、总页数、结果集

--首先,创建一个包,定义游标类型
CREATE
OR REPLACE PACKAGE fenye_package IS
TYPE fenye_cursor IS REF CURSOR;
END
fenye_package;

--输入:表名、每页显示的记录数、当前页
--输出:总记录数、总页数、结果集
CREATE OR REPLACE PROCEDURE
sp_fenye
(tableName   IN
VARCHAR2,--表名称
 maxresult   IN NUMBER, 
--每页记录数
 currentpage IN NUMBER,  --当前页
 totalrecord OUT
NUMBER, --总记录数
 totalpage   OUT NUMBER,
--总页数
 p_cursor    OUT fenye_package.fenye_cursor --
输出结果集
) IS
--变量定义部分
v_sql   varchar2(1000);
--sql分页语句
v_begin
number:=(currentpage-1)*maxresult;--开始行号
v_end  
number:=currentpage*maxresult;    --结束行号
BEGIN
 
v_sql:= ‘SELECT * FROM (SELECT ROWNUM RN, T1.* FROM

          (SELECT * FROM
‘||tableName||‘) T1 WHERE ROWNUM <=‘||v_end||‘)

          WHERE RN
>‘||v_begin;
  open p_cursor for v_sql;--把分页语句与游标关联
 

  --计算总记录数
  v_sql:= ‘select count(*) from
‘||tableName;
  execute immediate v_sql into
totalrecord;--执行sql并把返回的结果值赋值给totalrecord
  --计算总页数
  if
mod(totalrecord,maxresult)=0 then
   
totalpage:=totalrecord/maxresult;
  else
   
totalpage:=totalrecord/maxresult+1;
   
--totalpage:=trunc(totalrecord/maxresult,0)+1;
  end if;
 

END sp_fenye;

Oracle ——存储过程——分页,布布扣,bubuko.com

时间: 2025-01-02 03:09:44

Oracle ——存储过程——分页的相关文章

oracle存储过程分页

1.首先在oracle中建包体,用于游标返回当前数据记录集 CREATE OR REPLACE PACKAGE pkg_query AS TYPE cur_query IS REF CURSOR; END pkg_query; 2.在oracle中建存储过程,存储过程名库 PROCEDURE prc_query CREATE OR REPLACE PROCEDURE prc_query (p_tableName in varchar2, --表名 p_strWhere in varchar2,

c#+oracle存储过程实现分页

1.在oracle的sqlplus或其他工具中运行一下pl/sql块建立存储过程 --------------------------------------------------------------分页存储过程--------------------------------------------------------------创建包create or replace package testpackage astype test_cursor is ref cursor;end t

oracle 存储过程 ,触发器练习

/*以下代码是对emp表进行显示宽度设置 */col empno for 9999;col ename for a10;col job for a10;col mgr for 9999;col hiredate for a12;col sal for 9999;col comm for 9999;col deptno for 99;col tname for a12;set pagesize 50; //----------------------------------------------

Oracle 存储过程学习

Oracle 存储过程学习 目录 Oracle 存储过程 1 Oracle存储过程基础知识 1 Oracle存储过程的基本语法 2 关于Oracle存储过程的若干问题备忘 4 1. 在Oracle中,数据表别名不能加as. 4 2. 在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了. 5 3. 在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常. 5 4.

oracle存储过程实例

oracle存储过程实例 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有非常多长处,详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是非

EntityFramework 4使用存储过程分页

1 CREATE PROC usp_OrgPage_SQL 2 @pageIndex INT, 3 @pageSize INT, 4 @totalCount INT OUTPUT 5 AS 6 BEGIN 7 SET @totalCount = (SELECT COUNT(*) FROM dbo.Organization) 8 SELECT * FROM 9 ( 10 SELECT *,ROW_NUMBER() OVER(ORDER BY OrganizationID DESC)AS row F

java怎样将一组对象传入Oracle存储过程

java怎样将一组对象传入Oracle存储过程.须要注意的是jar包是有要求的,假设使用不当会导致仅仅有数字能传过去,字符串传只是去.假设是Oracle11g则须要选用例如以下的jar包,F:\app\Administrator\product\11.2.0\dbhome_1\jlib\orai18n.jar. D:\program\weblogic\oracle_common\modules\oracle.jdbc_11.2.0\ojdbc6.jar 样例例如以下: CREATE OR REP

springMVC + oracle存储过程 构建高性能灵活易维护的java web架构

MVC让简单的业务也变得复杂 不知道你在使用MVC模式开发项目的时候是否觉得很麻烦,一个简单的增删改查动作却要涉及到多个文件操作. 以一条数据增加为例说明. 假设我们使用hibernate并且dao层是已经封装好的 从图中可以看出如果我们在系统中写一个增加功能需要自己动手写的地方至少是 jsp , action , service,servicesImpl 四层. 如果是复杂的添加操作那么我们很可能还会自己定义dao层的接口和方法,那样就是6层操作了. 如果使用mybatis 至少也是写4层,常

sql 高性能存储过程分页

USE [Lyjjr] GO /****** Object: StoredProcedure [dbo].[P_ViewPage] Script Date: 05/29/2015 17:18:56 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[P_ViewPage] @TableName VARCHAR(200), --表名 @FieldList VARCHAR(2000), --显示列名,如