asp.net 分页存储过程解析

 代码如下 复制代码

ALTER PROCEDURE [dbo].[sp_Sql_Paging]
(
@SqlDataTable NVARCHAR(4000), -- 表名
@PrimaryKey NVARCHAR(4000), -- 主键名称
@Fields NVARCHAR(4000), -- 要返回的字段
@pageSize INT, -- 页尺寸
@pageIndex INT, -- 页码
@recordCount INT OUTPUT, -- 记录总数
@strOrderBy NVARCHAR(4000), -- 排序
@strWhere NVARCHAR(4000) -- 查询条件
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @strSQL1 NVARCHAR(4000) -- SQL语句1
DECLARE @strSQL2 NVARCHAR(4000) -- SQL语句2
DECLARE @strSQL3 NVARCHAR(4000) -- SQL语句3

SET @strSQL1 = 'SELECT ' + @PrimaryKey + ', ROW_NUMBER() OVER (' + @strOrderBy +

') AS RowNumber FROM ' + @SqlDataTable + ' ' + @strWhere

--获取总记录数
SET @strSQL3 = 'SELECT @recordCount = COUNT(*) FROM ' + @SqlDataTable + ' ' +

@strWhere
EXEC SP_EXECUTESQL
@stmt = @strSQL3,
@params = N'@recordCount AS INT OUTPUT',
@recordCount = @recordCount OUTPUT

--分页查询
IF @pageIndex > @recordCount * 1.0 / @pageSize + 1.0 OR @recordCount <= @pageSize
BEGIN
SET @pageIndex = 1
END
SET @strSQL2 = 'SELECT ' + @Fields + ' FROM ' + @SqlDataTable + ' WHERE ' +

@PrimaryKey + ' IN (SELECT '+@PrimaryKey+' FROM ('+@strSQL1+') TempTable WHERE

RowNumber BETWEEN ' + Str((@pageIndex - 1) * @pageSize + 1) + ' AND ' + Str

(@pageIndex * @pageSize) + ') ' + @strOrderBy
EXEC SP_EXECUTESQL @strSQL2
END

时间: 2024-10-27 01:10:01

asp.net 分页存储过程解析的相关文章

asp.net 分页存储过程实例剖析心得_实用技巧

1.开始还原 下面先看一下原来的分页存储过程. 复制代码 代码如下: ALTER PROCEDURE [dbo].[sp_Sql_Paging] ( @SqlDataTable NVARCHAR(4000), -- 表名 @PrimaryKey NVARCHAR(4000), -- 主键名称 @Fields NVARCHAR(4000), -- 要返回的字段 @pageSize INT, -- 页尺寸 @pageIndex INT, -- 页码 @recordCount INT OUTPUT,

.NET分页存储过程代码及使用

最近需要做个论坛,其中用到了分页,如果把整表的数据都查询出来未免小题大做,而且还影响速度 ,所以百度了并私有化了一个分页存储过程,实现了调用. 好了,废话不多说,贴出代码: /**** 使用帮助 首先查询表总行数,再查询分页数据 查询行数传入参数:@doCount,@tblName 查询分页传入参数:@tblName,@PageSize,@PageIndex,@fldName *以上不带查询条件的查询 带条件的加参数:@strWhere *分页查询可以使用排序 参数:@OrderType ***

asp.net中常用到的SQL分页存储过程

asp.net中常用到的SQL分页存储过程 以下是引用片段:create PROCEDURE [dbo].[myPage] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 排序的字段名,一般为唯一标识 @strGetFields varchar(1000) = ' * ', -- 需要返回的列  @PageSize int = 10, -- 每页有多少条记录 @PageIndex int = 1, -- 第几页 @Count int 

asp.net-ASP.NET MVC怎么使用分页存储过程

问题描述 ASP.NET MVC怎么使用分页存储过程 ASP.NET MVC+EF数据库,Controller中使用pageindex参数怎么实现调用数据库的分页存储过程? 解决方案 http://kb.cnblogs.com/page/59560/

asp.net利用存储过程和div+css实现分页(类似于博客园首页分页)_实用技巧

首先声明以下几点: 1.也许讲解有点初级,希望高手不要"喷"我,因为我知道并不是每一个人都是高手,我也怕高手们说我装13,小生不才: 2.如有什么不对的地方,还希望大家指出,一定虚心学习: 3.本文属于作者原创,尊重他人劳动成果,转载请注明作者,谢谢. 下面开讲: 首先说下思路,写一个存储过程,我也找了一个存储过程,不过不是我写的,出处:http://www.cnblogs.com/zhongweiv/archive/2011/10/31/JqueryPagination.html 这

asp.net+datagrid +aspnetpager+分页存储过程如何导出EXCEL

问题描述 asp.net+datagrid+aspnetpager+分页存储过程如何导出EXCEL,目前只能导出当前页. 解决方案 解决方案二:导出绑定datagrid的Datset就可以了...解决方案三:存储过程已经分页了,也就是说DATASET的数据就是当前数据.解决方案四:aspnetpager或存储过程分页无法获取全部数据的(当然如何你全部数据少于pagesize例外)这样的话,我想要重新用一个查询去获取全部数据到DataSet了,然后再导出DataSet中的数据,这样才是全部数据解决

asp.net原创分页存储过程和分页实例

我们先把子sql存储过程拿出来 分页存储过程.  代码如下 复制代码 CREATE PROCEDURE [dbo].[proc_SplitPage]     -- Add the parameters for the stored procedure here     @tblName   varchar(255),       -- 表名     @strFields varchar(1000) = '*', -- 需要返回的列,默认*     @strOrder varchar(255)='

支持任意排序的分页存储过程(asp.net/sqlserver)

 代码如下 复制代码 ------------------------------------  --用途:支持任意排序的分页存储过程  --说明:  ------------------------------------    CREATE PROCEDURE [dbo].[UP_GetRecordByPageOrder]    @tblName varchar(255),   -- 表名  @fldName varchar(255),   -- 显示字段名  @OrderfldName v

asp.net利用存储过程分页代码

下面是存储过程(sqlserver2000下通过)   --最通用的分页存储过程 -- 获取指定页的数据  CREATE PROCEDURE Pagination  @tblName   varchar(255),       -- 表名  @strGetFields varchar(1000) = ''*'',  -- 需要返回的列  @fldName varchar(255)='''',      -- 排序的字段名  @PageSize   int = 10,          -- 页尺