开发者社区> 吞吞吐吐的> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SQL Server 2005 分页存储过程

简介:
+关注继续查看

支持:多表连接查询、Group by分组查询等。(多表连接查询时请指定字段,不要用SELECT *)
返回为一结果集,有一个输出参数为记录总数,配合AspNetPager控件使用绝配。
转载请注明出处,欢迎讨论Pk。

CREATE PROCEDURE web_pager (
    
@rowsTotal INT OUTPUT,            --输出记录总数
    @tableName VARCHAR(800),        --表名
    @fieldName VARCHAR(800),        --查询字段
    @keyName VARCHAR(200),            --索引字段
    @pageSize INT,                    --每页记录数
    @pageNow INT,                    --当前页
    @stringOrder VARCHAR(200),        --排序条件
    @stringWhere VARCHAR(800)        --WHERE条件
)
AS
BEGIN
     
DECLARE @beginRow INT
     
DECLARE @endRow INT
     
DECLARE @tempLimit VARCHAR(200)
     
DECLARE @tempCount NVARCHAR(1000)
     
DECLARE @tempMain VARCHAR(1000)

     
SET @beginRow = (@pageNow - 1* @pageSize    + 1
     
SET @endRow = @pageNow * @pageSize
     
SET @tempLimit = 'rows BETWEEN ' + CAST(@beginRow AS VARCHAR+' AND '+CAST(@endRow AS VARCHAR)
     
     
--输出参数为总记录数
     SET @tempCount = 'SELECT @rowsTotal = COUNT(*) FROM (SELECT '+@keyName+' FROM '+@tableName+' WHERE '+@stringWhere+') AS my_temp'
     
EXECUTE sp_executesql @tempCount,N'@rowsTotal INT OUTPUT',@rowsTotal OUTPUT
       
     
--主查询返回结果集
     SET @tempMain = 'SELECT * FROM (SELECT ROW_NUMBER() OVER ('+@stringOrder+') AS rows ,'+@fieldName+' FROM '+@tableName+' WHERE '+@stringWhere+') AS main_temp WHERE '+@tempLimit
     
EXECUTE (@tempMain)
END
本文转自chy710博客园博客,原文链接:http://www.cnblogs.com/chy710/archive/2008/05/15/1198202.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL Server 优化存储过程的七种方法
原文: SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种。 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数。
1136 0
Mysql常用sql语句(13)- having 过滤分组结果集
Mysql常用sql语句(13)- having 过滤分组结果集
46 0
MySQL关于SQL语句的一些题目
MySQL关于SQL语句的一些题目 1、用一条SQL语句查询出每门课都大于80的学生的姓名 (1)SELECT NAME FROM score GROUP BY NAME HAVING MIN(grade) > 80 (2)SELECT DISTINCT NAME FROM score WH.
1526 0
***mysql中查询今天、昨天、上个月sql语句
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名)
1030 0
MySQL的一些常用的SQL语句整理
安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦。所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版。这样就会省去很多麻烦,在这里我就不再详细的介绍具体的安装过程了,百度一下,Google,上面有手把手的教程。
855 0
T-SQL查询:语句执行顺序
原文:T-SQL查询:语句执行顺序 读书笔记:《Microsoft SQL Server 2008技术内幕:T-SQL查询》   ===============  T-SQL查询的执行顺序 ===============      =============== T-SQL查询的示意图...
784 0
4849
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载