有返回值的存储过程(列表 结果集)
案例:编写一个过程,输入部门编号,返回该部门所有员工的信息。对该题的分析如下:
由于Oracle的存储过程没有返回值,它的所有返回值都是通过out参数来代替的,列表同样也不例外,但是由于是集合,所以不能用一般的参数,必须要用package,所以分两部分:
1)建一个包。如下:
create or replace package testpackage AS TYPE test_cursor
is ref cursor;
end testpackage;
在该包中我定义了一个游标类型 test_cursor
下面就是写创建过程了
create or replace procedure chenchuang_pro
(chenNo in number p_cursor out testpackage.test_cursor) is
begin
open p_cursor for select * from emp wheredeptno-chenNo;
end;
---------------------------------------------------------
要求,编写一个存储过程,要求可以输入表名,每页显示记录数,当前页,返回总记录数,总页数,和返回结果集。(也就是写一个
分页的存储过程)
Oracle 的分页:
在分页的时候,把下面的sql语句当作模板使用
select * from (select t1.* , rownum rn from (select * from
emp)t1 where rn<=10) where rn>=6
--开始编写分页的过程
先写一个包
create or replace package testpackage AS TYPE test_cursor
is ref cursor;
end testpackage;
created or replace procedure fenye
(tableName in varchar2,
PageSize in number;--每页显示的数据量
PageNow in number;--当前的页码
myRows out number;--总记录数
myPageCount out number;--中页数
P_cursor out testpackage.test_cursor-- 返回的记录集
) is
-- 定义部分
---定义sql语句
v_sql varchar2(1000);
v_begin number:=(PageNow-1)*PageSize+1;--分页算法
v_end number :=PageNow*PageSize;
begin
--执行部分
v_sql:='select * from (select t1.* , rownum rn from (select * from '|| tableName||')t1 where rn<='||v_end||') where rn>='||v_begin;
--把游标和sql关联
open p_cursor for v_sql;
--计算MyRows 和MyJpageCount
--组织一个sql
v_sql:='select count(*) from '|| tableName
--执行sql,并把返回值 赋给MyRows
excute immediate v_sql into MyRows;
--计算myPageCount
if mod (myRows,PageSize )=0 then
myPageCount:=myRows/PageSize;
else myPageCount:=myRows/PageSize+1;
end if ;
--关闭游标
close p_cursor;
end
- 大小: 34.5 KB
分享到:
相关推荐
oracle分页存储过程,oracle分页存储过程
一个高效的分页存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_condition VARCHAR2, p_page_num NUMBER, p_records_per_page NUMBER, result OUT SYS_REFCURSOR ) AS v_...
### Oracle分页存储过程解析与应用 在数据库管理和应用程序开发中,处理大量数据时,分页查询是一项常用且重要的技术。Oracle数据库提供了多种方法来实现数据分页,其中使用存储过程进行分页是一种高效且灵活的方式...
"Oracle分页存储过程 终极版"旨在提供一个高效、灵活的解决方案,以应对各种分页查询的需求。这个存储过程优化了性能,并支持各种条件筛选和排序,使得在海量数据中进行分页操作变得更为便捷。 首先,理解分页的...
之前一直用SQL SERVER做项目,但是现在需要用到ORACLE,在网上找了几个都无法正常调用,因此自己写了一个,给大家一起分享,在写的过程中学习到了很多东西,同时也体会到了SQL SERVER和ORACLE中的异同点 在分页存储...
总的来说,通过自定义的Oracle分页存储过程,开发者可以方便地实现数据库的高效分页查询,同时保持代码的整洁和可维护性。在实际项目中,可以根据具体需求进行调整和优化,以达到最佳性能和用户体验。
总结来说,Oracle分页存储过程是通过动态构造SQL语句,结合输入的分页参数,计算出总页数,并返回指定页的数据。这种方式在处理大量数据时提高了效率,同时也提供了灵活的查询控制。通过包装这些逻辑在存储过程中,...
ibatis调用oracle存储过程分页
Oracle 存储过程是数据库管理中的一个重要组成部分,它允许开发者编写复杂的SQL和PL/SQL代码,然后在数据库中以函数或程序的形式存储和调用。在处理大量数据时,分页查询是必不可少的,它可以有效地减少网络传输的...
总的来说,Oracle的高效分页存储过程不仅涉及SQL查询的优化,还涵盖了数据库设计、索引策略、并发控制等多个方面。正确理解和应用这些技巧,能显著提升Oracle数据库的分页查询性能,为用户提供更流畅的体验。
标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能。 #### 描述解析 描述部分简述了此存储过程的特点:“Oracle通用数据库存储...
### Oracle存储过程分页知识点详解 #### 一、Oracle存储过程分页原理及实现方法 在Oracle数据库中,实现分页查询通常有两种方法:一种是使用`ROWNUM`伪列,另一种则是通过存储过程实现。其中,使用存储过程进行...
一个分页存储过程,如`GET_EMPLOYEES_BY_PAGE`,会接受页码和每页大小作为参数,返回指定范围的记录。它通常会结合使用`ROWNUM`伪列或者Oracle 12c引入的`FETCH NEXT`子句来实现分页。 在实现这些存储过程时,我们...
功能说明 写好oracle的连接字符串和查询语句,调用程序中的方法可以很方便的实现分页功能。该方法中,将参数连接字符串,查询的sql语句,... 效率不是很高,如有高人写出很厉害的分页存储过程,希望您与大家分享。
以下是一个简单的分页存储过程示例: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_page_size IN NUMBER, p_current_page IN NUMBER, p_table_name IN VARCHAR2, p_column_list IN VARCHAR2, p_...
oracle数据库的查询分页加条件和排序的通用型存储过程,通过将表名以参数的形式传入到存储过程中做到多表通用,也可以是多表关联的sql语句 将其看作一个表也能调用该存储过程,分页只需要传与页数,和每页显示的行数...
综上所述,这个"oracle和mssql分页存储过程-均通用"的压缩包文件提供了一个跨平台的解决方案,帮助开发者在Oracle和MSSQL数据库中轻松实现高效的分页查询,同时提高了代码的可维护性和复用性。在实际应用中,应结合...
首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ROWNUM ) WHERE RN >= 21 ``` 在这个例子中,最内层...
本文将详细介绍如何在 Oracle 中创建一个用于分页查询并返回总记录数的存储过程。 #### 核心概念 1. **存储过程**:存储在数据库中的可编程对象,可以接受参数、执行操作、返回结果。 2. **分页**:通过限制查询...