--程序包-规范(通用存储过程)
create or replace package pagePack
as
type pageCursorType is ref cursor;--游标类型
procedure procPage(
tableName varchar2,--查询的表名
showField varchar2,--查询的字段,T.*表示所有
whereText varchar2,--查询的条件,不要where
orderText varchar2,--排序的字段,不要order by
pageIndex integer,--显示的页码
pageSize integer,--每页显示的记录数
pageCursor out pageCursorType,--返回的游标
counter out integer--返回的记录总数
);
end;
--程序包-主体
create or replace package body pagePack
as
procedure procPage(
tableName varchar2,--查询的表名
showField varchar2,--查询的字段,T.*表示所有
whereText varchar2,--查询的条件,不要where
orderText varchar2,--排序的字段,不要order by
pageIndex integer,--显示的页码
pageSize integer,--每页显示的记录数
pageCursor out pageCursorType,--返回的游标
counter out integer--返回的记录总数
)
as
sqlstr varchar2(400);
wText varchar2(100);
oText varchar2(100);
begin
if whereText is not null then
wText:=' where '||whereText;
end if;
if orderText is not null then
oText:=' order by '||orderText;
end if;
sqlstr:='select * from
(
select rownum rn, '||showField||' from
(select * from '||tableName||wText||oText ||' ) T
where rownum<=:1
)
where rn>:2';
dbms_output.put_line(sqlstr);
open pageCursor for sqlstr using pageSize*pageIndex,pageSize*(pageIndex-1);
sqlstr:='select count(*) from '||tableName||wText||oText;
dbms_output.put_line(sqlstr);
execute immediate sqlstr into counter;
end;
end;
java中调用
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ronaldo");
String callsql = "{call pagePack.procPage(?,?,?,?,?,?,?,?)}";
OracleCallableStatement ocs = (OracleCallableStatement) conn
.prepareCall(callsql);
int i = 1;
ocs.setString(i++, "product");
ocs.setString(i++, "pname");
ocs.setString(i++, null);
ocs.setString(i++, null);
ocs.setString(i++, "1");
ocs.setString(i++, "2");
ocs.registerOutParameter(7, oracle.jdbc.OracleTypes.CURSOR);
ocs.registerOutParameter(8, Types.INTEGER);
ocs.executeUpdate();
ResultSet rs = ocs.getCursor(7);
while (rs.next()) {
System.out.println(rs.getString(2));
}
int sum = ocs.getInt(8);
System.out.println("一共个数是" + sum);
分享到:
相关推荐
通用存储过程(通用的分页存储过程) 在实际项目开发中,存储过程是非常常见的,因此掌握存储过程的用法是开发人员必备的实战法宝
"通用存储过程+增删改查"的主题涵盖了数据库中最基础且重要的操作:插入(Insert)、删除(Delete)、更新(Update)和查询(Select)。这些操作是数据库应用开发的核心,通过存储过程实现,能提高数据处理的性能,...
本篇主要介绍如何通过通用存储过程实现高效的分页查询。 首先,理解分页的基本概念。在数据库查询中,分页通常涉及到两个关键参数:`当前页数`(Page Number)和`每页记录数`(Records Per Page)。例如,第一页...
本文将详细解析"经典的分页、排序SQL 通用存储过程"所涉及的知识点,并给出如何实现这样的存储过程。 首先,分页是数据库查询中的一种优化策略,用于限制每次查询返回的结果数量,从而避免一次性加载大量数据导致的...
mysql 通用存储过程,,下载直接导入mysql工具中即可使用,包含所有通用查询功能,下载资源即可使用
本主题将深入探讨如何在ASP.NET中利用通用存储过程实现分页。 首先,理解存储过程的概念是至关重要的。存储过程是在数据库中预编译的SQL语句集合,它能够执行特定的任务,如查询、插入、更新或删除数据。在分页场景...
Mysql分页通用存储过程
根据提供的标题、描述、标签及部分内容,本文将详细介绍SQL中实现列转行及行转列通用存储过程的具体方法,特别是针对Microsoft SQL Server版本的应用场景。 ### 标题解析:SQL列转行及行转列的通用存储过程 该标题...
### Aaron通用存储过程分页详解 #### 一、概述 在数据库操作中,分页查询是一种常见的需求,尤其是在处理大量数据时。为了提高查询效率,本文将详细介绍一个名为`Pr_PageList_final`的通用存储过程,它采用了...
总的来说,这个MySQL分页查询通用存储过程为开发人员提供了一个便捷的工具,用于处理分页查询的复杂逻辑,简化了代码编写。但实际使用时,还需要根据具体的数据库设计和数据量大小进行适当的调整和优化。
mysql通用存储过程sql脚本,支持多表,子查询,高级查询 分页
"基于C#+ASP.NET实现的通用存储过程自动生成的管理程序代码" 是一个使用C#编程语言和ASP.NET框架开发的应用程序,它的主要功能是自动化生成存储过程。C#是一种面向对象的编程语言,常用于开发Windows桌面应用、Web...
sqlserver通用存储过程,全面好用,你可下载看看代码哦,保证最全面。
oracle数据库的查询分页加条件和排序的通用型存储过程,通过将表名以参数的形式传入到存储过程中做到多表通用,也可以是多表关联的sql语句 将其看作一个表也能调用该存储过程,分页只需要传与页数,和每页显示的行数...
一个通用存储过程分页(特别是对大数据很好用),里面包含liq to sql 和sap.net 调用他的实例方法
### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
这些操作对于任何数据库系统来说都是基础且频繁的,因此创建通用的存储过程能够提高开发效率,降低出错可能性,同时提升系统的性能。 标题"通用的增删改查 存储过程"意味着我们将探讨如何设计和使用一系列可复用的...
原项目中使用Oracle存储过程进行分页,前端借助AspNetPager控件进行分页控制,使用简单方便,并可容易地实现绑定控件(如GridView)的自动编号列功能。现将数据库改用SqlServer2000,经测试,能很好地实现分页功能,...
为了优化,可以考虑使用Oracle的ROW_NUMBER()函数配合窗口函数,但这需要在查询中进行调整,可能不再适合作为通用存储过程。 总结来说,Oracle存储过程实现分页查询的关键在于动态构造SQL语句,结合ROWNUM或ROW_...