SQL2008版分页存储过程
来源:互联网 发布:微商和淘宝哪个好做 编辑:程序博客网 时间:2024/05/13 03:48
在原来的SQL2000的常规分页存储过程中,有个比较严重的权限,如果排序字段非唯一,返回的结果不正确SQL2005,2008提供了新的语句 row_number(),这为我们编写分页存储过程提供了新的思路
Create PROCEDURE PagerShow
@QueryStr varchar(max), --表名、视图名、查询语句
@PageSize int=10, --每页的大小(行数)
@PageCurrent int=1, --要显示的页
@FdShow VarChar(max), --要显示的字段列表(为空列出所有字段)
@FdOrder NVarChar(max), --排序字段列表
@FdOrderDirec int, --设置排序顺序;0:升序;1:降序
@Rows int OUTPUT -- 输出记录数, 如果@rows为null, 则输出记录数, 否则不要输出
AS
declare @strSQL varchar(max) -- 主语句
declare @strTmp varchar(max) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
declare @head VarChar(max)
declare @Sql varchar(max)
if (@FdShow ='')
set @FdShow = '*'
if (@FdOrderDirec=0)
set @strOrder = ' Order by ' + @FdOrder + ' asc'
else
set @strOrder = ' Order by ' + @FdOrder + ' desc'
set @QueryStr=' (' + @QueryStr + ')abc'
declare @lbuseidentity nvarchar(max)
set @lbuseidentity = 'select @rows = count(*) from '+@QueryStr
exec sp_executesql @lbuseidentity, N'@Rows int out', @Rows out
declare @StartNums varchar(20)
declare @EndNums varchar(20)
set @StartNums = (@PageSize*(@PageCurrent-1)) + 1
set @EndNums = (@PageSize*@PageCurrent)
set @Sql = '
with t_rowtable as ( select row_number() over(' + @strOrder + ' ) as row_number,' + @FdShow + ' from ' + @QueryStr + ' )
select ' + @FdShow + ' from t_rowtable where row_number>=' + @StartNums + ' and row_number<=' + @EndNums + @strOrder
exec (@Sql)
- SQL2008版分页存储过程
- sql2008存储过程
- SQL2008,SQL2005存储过程解密
- SQL2008,SQL2005存储过程解密
- 破解SQL2005(SQL2008)的存储过程的存储过程(总结可用版)
- sql2008 xml 读取 写入 存储过程
- sql2008通用存储过程的实现。
- 破解SQL2005(SQL2008)的存储过程的存储过程
- orcale分页 存储过程分页
- C# SQL2008数据库存储中的存储过程例子
- ASP 分页存储过程(无错版)
- SQL存储过程分页完美版
- Sql2005 版通用分页存储过程
- Sql2000 版通用分页存储过程
- 2005存储过程分页修改版
- 一个分页存储过程
- 一个分页存储过程
- 存储过程分页代码
- 计算机基本结构
- 深入浅出FFMPEG
- Glx-Dock / Cairo-Dock
- 总结DetachedCriteria级联查询
- Perl 学习笔记 --- 13
- SQL2008版分页存储过程
- Perl 学习笔记 --- 14
- 欧拉计划网第十四题解决方案
- ubuntu中Rails Server遇到Could not find a JavaScript runtime问题
- 非常好的讲解redhat9的基本服务的博客
- c++绝对路径和相对路径
- 做生意的十大禁忌
- 折腾人的维修台式机经历
- 如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器