mmssqlserver中三种分页存储过程代码

php中文网
发布: 2016-06-07 17:48:51
原创
1102人浏览过

本文章介绍了关于在mmssqlserver中三种分页存储过程实现代码,有需要的朋友可以参考一下下哈,好了费话不说多了我们来看看吧。

--根据max(min)id

网奇企业网站管理系统CWMS2.0 英文版
网奇企业网站管理系统CWMS2.0 英文版

CWMS 2.0功能介绍:一、 员工考勤系统,国内首创CWMS2.0的企业员工在线考勤系统。二、 自定义URL Rewrite重写,友好的搜索引擎 URL优化。三、 代码与模板分离技术,支持超过5种类型的模板类型。包括:文章、图文、产品、单页、留言板。四、 购物车功能,CWMS2.0集成国内主流支付接口。如:淘宝、易趣、快钱等。完全可媲美专业网上商城系统。五、 多语言自动切换 中英文的说明。六、

网奇企业网站管理系统CWMS2.0 英文版 0
查看详情 网奇企业网站管理系统CWMS2.0 英文版
 代码如下 复制代码
CREATE PROC [dbo].[proc__id]
@pageindex int=1,--当前页数
@pagesize int=10,--每页大小
@tablename VARCHAR(50)='',--表名
@fields VARCHAR(1000)='',--查询的字段集合
@keyid VARCHAR(50)='',--主键
@condition NVARCHAR(1000)='',--查询条件
@orderstr VARCHAR(500),--排序条件
@totalRecord BIGINT OUTPUT--总记录数
AS
 IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
 IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
 IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
 DECLARE @sql NVARCHAR(4000)
 --IF(@totalRecord IS NULL)
 --BEGIN
  SET @sql=N'SELECT @totalRecord=COUNT(*)'
   +N' FROM '+@tablename
   +N' WHERE '+@condition
  EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
 --END
 IF(@pageindex=1)
 BEGIN
  SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
  EXEC(@sql)
 END
 ELSE
 BEGIN
  DECLARE @operatestr CHAR(3),@comparestr CHAR(1)
  SET @operatestr='MAX'
  SET @comparestr='>'
  IF(@orderstr'')
  BEGIN
   IF(CHARINDEX('desc',LOWER(@orderstr))0)
   BEGIN
    SET @operatestr='MIN'
    SET @comparestr='    END
  END
  SET @sql=N'SELECT top '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@keyid+@comparestr
   +N'(SELECT '+@operatestr+N'('+@keyid+N') FROM '+@tablename+N' WHERE '+@keyid
   +N' IN (SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '+@tablename+N' WHERE '
   +@condition+N' '+@orderstr+N')) AND '+@condition+N' '+@orderstr
  EXEC(@sql)
 END
GO


--根据ROW_NUMBER() OVER

 代码如下 复制代码
CREATE PROC [dbo].[proc_select_page_row]
@pageindex INT=1,--当前页数
@pagesize INT=10,--每页大小
@tablename VARCHAR(50)='',--表名
@fields VARCHAR(1000)='*',--查询的字段集合
@keyid VARCHAR(50)='',--主键
@condition NVARCHAR(1000)='',--查询条件
@orderstr VARCHAR(500),--排序条件
@totalRecord BIGINT  OUTPUT--总记录数
AS
 IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
 IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
 IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
 DECLARE @sql NVARCHAR(4000)
-- IF @totalRecord IS NULL
-- BEGIN
  SET @sql=N'SELECT @totalRecord=COUNT(*)'
   +N' FROM '+@tablename
   +N' WHERE '+@condition
  EXEC sp_executesql @sql,N'@totalRecord bigint OUTPUT',@totalRecord OUTPUT
--END
 IF(@pageindex=1)
 BEGIN
  SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
  EXEC(@sql)
 END
 ELSE
 BEGIN
  DECLARE @StartRecord INT
  SET @StartRecord = (@pageindex-1)*@pagesize + 1
  SET @sql=N'SELECT * FROM (SELECT ROW_NUMBER() OVER ('+ @orderstr +N') AS rowId,'+@fields+N' FROM '+ @tablename+N') AS T WHERE rowId>='+STR(@StartRecord)+N' and rowId   EXEC(@sql)
 END
GO


--根据TOP ID

 代码如下 复制代码
CREATE PROC [dbo].[proc_select_page_top]
@pageindex INT=1,--当前页数
@pagesize INT=10,--每页大小
@tablename VARCHAR(50)='',--表名
@fields VARCHAR(1000)='',--查询的字段集合
@keyid VARCHAR(50)='',--主键
@condition NVARCHAR(1000)='',--查询条件
@orderstr VARCHAR(500),--排序条件
@totalRecord BIGINT OUTPUT--总记录数
AS
 IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY '+@keyid+N' DESC '
 IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
 IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
 DECLARE @sql NVARCHAR(4000)
 --IF(@totalRecord IS NULL)
 --BEGIN
  SET @sql=N'SELECT @totalRecord=COUNT(*)'
   +N' FROM '+@tablename
   +N' WHERE '+@condition
  EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
 --END
 IF(@pageindex=1)
 BEGIN
  SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE '+@condition+N' '+@orderstr
  EXEC(@sql)
 END
 ELSE
 BEGIN
  SET @sql=N'SELECT TOP '+STR(@pagesize)+N' '+@fields+N' FROM '+@tablename+N' WHERE  '+@keyid
  +N' NOT IN(SELECT TOP '+STR((@pageindex-1)*@pagesize)+N' '+@keyid+N' FROM '
  +@tablename+N' WHERE '+@condition+N' '+@orderstr+N') AND '+@condition+N' '+@orderstr
  EXEC(@sql)
 END
GO
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号