`
wcb820710
  • 浏览: 23445 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SqlServer通用的分页存储过程

阅读更多
***只做分页查询用***
/**
*  procedure name : prcPageResult
*  author : michael
*  create date : 2009-02-17
*/
create procedure procPageResult
---获得某一页的数据---
@currPage int = 1,   --->当前页页码(即top currPage)
@showColumn varchar(2000) = '*', --->需要查询的字段(即column1,column2,......)
@tabName varchar(2000),   --->需要查看的表名(即from table_name)
@strCondition varchar(2000) = '', --->查询条件(即where condition......) 不用加where关键字
@ascColumn varchar(100) = '',  --->排序的字段名(即order by column asc/desc)
@bitOrderType int = 0,   --->排序的类型(0为升序,1为降序)
@pkColumn varchar(50) = '',  --->主键名称
@pageSize int = 20   --->分页大小
as
begin  --->存储过程开始
---该存储过程需要用到的几个变量---
declare @strTemp varchar(1000)
declare @strSql varchar(4000)  --->该存储过程最后执行的语句
declare @strOrderType varchar(1000) --->排序类型语句(order by column asc/desc)
begin
if @bitOrderType = 1  --->@bitOrderType = 1 即执行降序
begin
    set @strOrderType = ' order by ' + @ascColumn + ' desc'
    set @strTemp = '<(select min'
end
else
begin
    set @strOrderType = ' order by ' + @ascColumn + ' asc'
    set @strTemp = '>(select max'
end
if @currPage = 1 --->如果是第一页
begin
    if @strCondition != ''
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + @strOrderType
    else
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + @strOrderType
end
else  --->其他页
begin
    if @strCondition != ''
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @strCondition + ' and ' +
@pkColumn + @strTemp + '(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn +
' from ' + @tabName + @strOrderType + ') as TabTemp)' + @strOrderType
    else
set @strSql = 'select top ' + str(@pageSize) + ' ' + @showColumn + ' from ' + @tabName + ' where ' + @pkColumn + @strTemp +
'(' + @pkColumn + ')' + ' from (select top ' + str((@currPage-1)*@pageSize) + ' ' + @pkColumn + ' from ' +
@tabName + @strOrderType + ') as TabTemp)' + @strOrderType
end
end
EXEC (@strSql)
end --->存储过程结束
go
--------------------------------------------------------------------
调用方法:
procPageResult 1,'*','TableName','','CreateDate',1,'PkID',25
查询表TableName的所有字段的前25条记录,因为是第一页,排序字段为CreateDate,1表示降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中
非常的适用。尤其是在百万级数据上,它的优势就显露无疑了。此段代码是转载别人的。
---------------------------------------------------------------------
***查询表记录数***
/**
*  procedure name : procRowsCount
*  author : michael
*  create date : 2009-02-17
*/
create procedure procRowsCount
@tabName varchar(200),  --->需要查询的表名
@colName varchar(200) = '*', --->需要查询的列名
@condition varchar(200) = '' --->查询条件
as
begin
    declare @strSql varchar(255)
    if @condition = ''
set @strSql = 'select count(' + @colName + ') from ' + @tabName
    else
set @strSql = 'select count(' + @colName + ') from ' + @tabName + ' where ' + @condition
    EXEC (@strSql)
end
-----------------------------------------------------------------------
删除记录的通用存储过程和查询单条记录的通用存储过程希望有的朋友传一份,在这里感谢提供原通用分页查询存储过程的哥们,谢谢。
分享到:
评论

相关推荐

    sql Server 通用分页存储过程

    sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程

    Sql Server 通用分页存储过程(适用与 BootStrap Table)

    通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.

    Sql Server 通用分页存储过程(BootStrap Table)

    Sql Server BootStrap Table 分页 通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.

    sql server 通用分页存储过程

    1.查询返回的表、列名以及排序列没有写死,可以根据需要将这些放到存储过程的输入参数中; 2.适用于所有需要分页的单表或多表联合查询。

    基于Sql Server通用分页存储过程的解决方法

    本文将深入探讨基于Sql Server的通用分页存储过程的实现方法,特别针对Sql Server 2005及以上版本。 在SQL Server 2000中,由于缺乏内置的分页功能,实现分页通常比较复杂,效率也不高,尤其是在数据量达到十万级别...

    SQL万能分页的存储过程

    对SQL分页的万能存储过程,很全面的分析和描述,请大家支持

    通用的SQL server分页存储过程

    下面是一个通用分页存储过程的示例: ```sql CREATE PROCEDURE dbo.GetPagedData @TableName NVARCHAR(128), -- 表名 @ColumnToOrder NVARCHAR(128), -- 排序字段 @SortOrder VARCHAR(4), -- 排序方式(ASC或...

    SQL Server 2000下的通用分页存储过程

    SQL Server 2000下的通用分页存储过程.sql

    sql server 2008通用分页

    SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。

    sqlserver 通用分页存储过程

    通过这个通用分页存储过程,开发人员可以快速创建分页查询,而无需每次都编写新的SQL代码。同时,由于存储过程的预编译特性,相比于直接运行动态SQL,它通常具有更好的性能表现。此外,存储过程还可以帮助保护数据,...

    SQL Server2005通用分页存储过程.rar

    本压缩包"SQL Server 2005通用分页存储过程.rar"包含了一个名为"SQL Server 2005通用分页存储过程.mht"的文件,很可能是详细讲解如何创建和使用分页存储过程的文档。 首先,我们要理解什么是存储过程。存储过程是预...

    SQL Server 的通用分页显示存储过程

    一种改进后的分页存储过程采用了SQL Server中的表变量技术,示例代码如下: ```sql CREATE procedure pagination1(@pagesize int, -- 页面大小,如每页存储20条记录 @pageindex int) -- 当前页码 as set nocount ...

    SQL Server 2000 通用分页过程

    本文将深入探讨一个针对 SQL Server 2000 的通用分页存储过程。该存储过程采用 `TOP + MAX(ID)` 的方法实现分页功能,并强调了关键字(`Keyword`)选择对于性能的影响。 #### 存储过程设计 此存储过程名为 `p_...

    SQL Server2005通用分页存储过程

    一个通用的万能分页存储过程 很好用 很方便

    通用分页存储过程(支持多表)

    通用分页存储过程主要通过接受多个参数来动态生成SQL语句,以实现对多表数据的分页查询。其核心在于灵活处理不同场景下的分页需求,包括字段选择、表连接、排序方式和额外的过滤条件等。此过程不仅简化了前端应用的...

    SQLSERVER 分页存储过程

    通用 SQLSERVER 分页存储过程 代码超级简单实用

    sqlserver分页存储过程+gridview实例+通用方法(sqlserverr通用)

    首先,我们来理解SQL Server分页存储过程的工作原理。分页通常涉及到两个关键参数:当前页号(@CurrentPage)和每页记录数(@PageSize)。存储过程通过计算出开始和结束的记录索引,然后使用`OFFSET-FETCH`或`TOP-N`...

Global site tag (gtag.js) - Google Analytics