针对Ext js的分页存储过程-适用于sqlserver2008

本文介绍了一个用于数据库分页查询的存储过程实现方案。该存储过程由刘晓伦创建于2012年10月13日,并在2013年1月5日进行了更新。它通过使用EXECUTE READER()方法执行SQL查询并返回指定数量的数据行。为确保输出参数正确获取,需要先关闭读取器。存储过程接受SQL语句、开始行号、页面大小、排序条件等参数。
USE [UTMP_RC_121213]
GO
/****** Object:  StoredProcedure [dbo].[PageProc]    Script Date: 01/05/2013 08:45:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        刘晓伦
-- Create date: 12-10-13
-- Description:    分页存储过程,
-- 如果使用ExcuteReader()方法执行此存储过程
-- 必须先reader.close()才能得到输出参数
-- =============================================
ALTER PROCEDURE [dbo].[PageProc]
( 
@sqlStr     nvarchar(max),    ----SQL语句 
@startRow   int,        ----开始的行
@pageSize   int,        ----一页多少行
@orderBy    nvarchar(max),    ----排序条件 
@rowCount    int = 1 output  ----一共多少行
) AS
BEGIN
SET NOCOUNT ON;
Declare @sql nvarchar(max)
Declare @csql nvarchar(max)
--todo:此处为了方便使用,没有考虑性能,意图是得到一共有多少行
select @csql = 'select @Counts = count(*) from ('+@sqlStr+') as t'
select @sql = 'select * from (select ROW_NUMBER() OVER (#order_by_replace_holder#)  AS RINDEX ,* FROM ( '+@sqlStr+' ) as t ) as b where '+ CAST(@startRow+1 as varchar)+' <= RINDEX and RINDEX <= '+CAST(@startRow+@pageSize as varchar)
select @sql = REPLACE(@sql,'#order_by_replace_holder#',@orderBy)
--把一共有多少行记录写入输出参数
exec sp_executesql @csql,N'@Counts int out ',@rowCount out 
--获得检索结果
exec sp_executesql @sql
    
END

在2013-1-5修改过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值