总结一个分页存储过程[修订版]
来源:互联网 发布:reactjs 循环遍历json 编辑:程序博客网 时间:2024/05/16 06:31
调试存储过程老是提示“Invalid column name ...”,晕倒,检查到最后发现是字符串竟然写成了"",哈哈,应该是 '',记住了。
在这里整理了两个可以用的分页存储过程,以备后用。
第一:
ALTER procedure Consignment
@tablename varchar(80) ,
@strOrder varchar(50) ,
@PageIndex int = 1,
@PageSize int = 15,
@strGetFields varchar(200) = '*',
@OutPut int output
as
Begin
Declare @strSql varchar(500)
DECLARE @SQL NVARCHAR(1000)
DECLARE @R BIGINT
SET @SQL= N'select @R=count(*) from '+@TableName
EXEC SP_EXECUTESQL @SQL, N' @R BIGINT OUTPUT', @R OUTPUT
SET @OutPut= @R
if(@PageIndex =1)
Begin
set @strSql='select top '+str(@PageSize)+' '+@strGetFields+' from '+@tablename+' order by '+@strOrder
End
Else
set @strSql='select top '+str(@PageSize)+' '+@strGetFields+' from '+@tablename+' where ('+@strOrder
+' >= ( select Max('+@strOrder+') from ( select top '+str(@PageSize*@PageIndex)+' * from '+@tablename+' order by '
+@strOrder+' ) as tempTable)) order by '+ @strOrder
select @strSql
exec(@strSql)
End
第二:
alter procedure AllProce
@tablename varchar(200) , --表名
@strGetFields varchar(200) = '*', --查询列名
@PageIndex int = 1 , --页码
@pageSize int = 15, --页面大小
@strWhere varchar(100) = '', --查询条件
@strOrder varchar(100) = '', --排序列名
@intOrder bit = 0, --排序类型 1为升序
@CountAll bigint output --返回纪录总数用于计算页面数
as
begin
declare @strSql varchar(500) --主语句
declare @strTemp varchar(100) --临时变量
declare @strOrders varchar(50) --排序语句
declare @table varchar(70)
declare @SQL nvarchar(1000)
declare @R bigint
set @SQL= N'select @R=count(*) from '+convert(nvarchar(200),@TableName)
exec SP_EXECUTESQL @SQL, N' @R BIGINT OUTPUT', @R OUTPUT
set @CountAll= @R
if @intOrder = 0
begin
--为0是升序
set @strTemp = '>(select max'
set @strOrders = ' order by '+@strOrder+' asc '
end
else
begin
--否则为降序
set @strTemp = '<(select min'
set @strOrders = ' order by '+@strOrder+' desc '
end
if @PageIndex =1 --第一页直接读出纪录
begin
if @strWhere = ''
begin
set @strSql = 'select top '+str(@pageSize)+' '+@strGetFields+' from '+@tablename+' '+@strOrders
end
else
begin
set @strSql = 'select top '+str(@pageSize)+' '+@strGetFields+ ' from '+@tablename+' where '+@strWhere+' '+@strOrders
end
end
else
begin
set @strSql = 'select top'+str(@pageSize)+' '+@strGetFields+' from '+@tablename+' where '+@strOrder+' '+@strTemp+' ('+@strOrder+')'
+' from (select top '+str((@pageIndex-1)*@pageSize)+' '+@strGetFields+' from '+@tablename+ ' '+@strOrders+ ') as tempTable ) '+@strOrders
if @strWhere != ' '
begin
set @strSql = 'select top '+str(@pageSize)+ ' '+@strGetFields+' from '+@tablename+ ' where '+@strOrder+ ' '+@strTemp+' ('+@strOrder+') '
+' from(select top '+str((@pageIndex-1)*@pageSize)+' '+@strGetFields+' from '+@tablename+' where '+@strWhere+' ' +@strOrders+') as tempTable) where '+@strWhere+' '+@strOrders
end
end
exec(@strSql)
end
GO
- 总结一个分页存储过程[修订版]
- 一个分页存储过程
- 一个分页存储过程
- 一个分页存储过程
- 一个分页存储过程。
- 存储过程分页总结
- SQLSERVER一个分页存储过程
- 一个分页的存储过程
- 一个分页的存储过程
- 一个高效分页存储过程
- 一个分页排序存储过程
- 分享一个分页存储过程
- 转载一个存储过程分页
- 一个分页存储过程【鸡蛋】
- 分页存储过程--一个简单的SQL存储过程
- 一个将数据分页的存储过程
- 一个将数据分页的存储过程
- 一个将数据分页的存储过程
- Spring框架讲解-基本配置与加载
- Spring框架讲解-基本概念
- 灌水回复
- Spring简单入门实例
- Spring AOP实现权限的管理
- 总结一个分页存储过程[修订版]
- UltraEdit使用小技巧
- Spring AOP处理日志
- WebSphereV6迁移EJB版本问题
- 3D引擎设计和架构
- 在Spring中集成Hibernate事务
- 7.2 枚举声明
- [注意]有关CPU字节序
- C++资源之不完全导引(完整版)