SQL存储过程实现分页查询

 1 --分页查询
 2 alter proc ShowInfo
 3     @Table nvarchar(50),--表.视图
 4     @PageSize int,--每页显示数量
 5     @PageIndex int,--当前显示页码
 6     @Conditions nvarchar(300),--筛选条件
 7     @Pages int output--返回总共有多少页
 8 as
 9     declare @start int ,--当前页开始显示的No
10     @end int,--当前页结束显示的No
11     @Context nvarchar(1024), --动态sql语句
12     @pkey nvarchar(10)--主键或索引
13     set @start=(@PageIndex-1)+1
14     set @end=@start+@PageSize-1
15     set @pkey=index_col(@Table,1,1)--获取主键,或索引
16     --通过条件将符合要求的数据汇聚到临时表#temp上
17     set @Context=‘select row_number() over(order by ‘+@pkey+‘) as [No],* into #temp  from ‘+@Table
18     --判断是否有筛选条件传入
19     if(@Conditions is not null)
20         set @Context=@Context+‘ where ‘+@Conditions
21     --通过查询#temp 表实现分页.
22     set @Context=@Context+‘  select * from #temp where No between ‘+cast(@start as nvarchar(4))+‘ and ‘+cast(@end as nva  rchar(4))
23     --返回出总共可以分成多少页
24     set @Context=@Context+‘  declare @count int  select @count=count(*) from #temp  set @Pages= @count/‘+cast(@PageSi  ze as nvarchar(4))+‘  if(@count%‘+cast(@PageSize as nvarchar(4))+‘<>0) set @[email protected]+1 ‘
25
26     exec sp_executesql @Context,N‘@Pages int output‘, @Pages output
27     -- sp_executesql @动态sql语句,@动态sql语句中需要的参数,@传入动态sql语句参数的值(个人理解)
28 ---------------------------------------------------------------------------------------------------
29 declare @p int
30 exec ShowInfo ‘Products‘,10,1,null, @p output
31 select @p
时间: 2024-10-11 12:34:07

SQL存储过程实现分页查询的相关文章

Sqlserver的SQL语句实现分页查询

在应用程序的开发中,如果数据库中的数据量过于的庞大,则需要针对查询数据做分页处理,取出对应分页中的数据,在Sqlserver分页的语句写法中,有两种比较常用,一种是数据表中含有自增量Id的情况,可以根据Id的大小顺序进行分页,另一种是数据库中不存在Int类型的Id的情况,此时就需要通过Row_Number函数来实现分页. (1)数据表中存在自增量Id的情况 假设我们查询的表名称为Student,包含的字段有:Id(Id号,自增变量).Name(姓名).BirthDay(出生日期).按出生日期从早

MySQL、Oracle和SQL Server的分页查询语句

原文地址:http://www.cnblogs.com/ginponson/p/5746435.html 假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询 SELECT * FROM student LIMIT (PageNo - 1) * PageSize,PageSize; 理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算. 2.Oracel的分页查询

SQL Server 数据分页查询

最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5条了) 方法一: select top 5 * from [StuDB].[dbo].[ScoreInfo] where [SID] not in (select top 10 [SID] from [StuDB].[dbo].[ScoreInfo] order by [SID]) order by

01---SQL数据库学习之创建存储过程及分页查询

1 ----分页查询@pageIndex第几页 @pageSize一页有几条记录 2 create proc GetPageList 3 @pageIndex int, 4 @pageSize int, 5 @rowsCount int output 6 as 7 begin 8 select @rowsCount= COUNT(*) from StudentInfo 9 select *from 10 (select *,ROW_NUMBER() over(order by stuId) 11

SQL Server 存储过程进行分页查询

CREATE PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage INT = 1 , --当前页页码 (即Top currPage) @showColumn VARCHAR(2000) = '*' , --需要得到的字段 (即 column1,column2,......) @tabName VARCHAR(2000) , --需要查看的表名 (即 from table_name) @strCondition VARCHAR(2000) = '' ,

通过存储过程进行分页查询的SQL示例

--创建人:zengfanlong --创建时间:2014-7-28 10:51:15 --说明:根据公司简写代码获取当前待同步的气瓶档案数据(分页获取) ALTER PROCEDURE [UP_GasBottles_GetSyncData_ByPage] ( @CompanyAbbrCode NVARCHAR(255) = '' , @LatastRowVersion_BigInt BIGINT , @CurrentMaxRowVersion_BigInt BIGINT , @StartPag

SQL Server 多种分页查询效率

关于SQL语句分页,网上也有很多,我贴一部分过来,并且总结自己已知的分页到下面,方便日后查阅. 方法1 适用于 SQL Server 任何版本 SELECT TOP 页大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) ORDER BY id 方法2 适用于 SQL Server 任何版本 --顺序写法: SELECT TOP 页大小 * FROM table1 WHERE i

java连接oracle数据库调用存储过程实现分页查询(emp为例)

第一步:建一个含游标类型的包 sql>create or replace package testPackage as type test_cursor is ref cursor;    --定义名为test_cursor 的游标 end testPackage; 第二步:编写分页的存储过程 sql>create or replace procedure fenYe( tableName in varchar2,--表名 pageSize in number,--每页显示的记录数 pageN

【SQL】Oracle分页查询的三种方法

采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t where ROWNUM <10;  按照学生ID排名,抓取前三条记录 [java] SELECT * FROM(SELECT id,realname FROM T_USER ORDER BY id asc ) WHERE ROWNUM <=3  分页SQL写法,从第10条记录开始,提取10条记录. [java] SELECT * FROM (