基于SqlServer通用分页存储过程的解决方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于SqlServer通用分页存储过程的解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2188字,纯文字阅读大概需要4分钟。
内容图文
![基于SqlServer通用分页存储过程的解决方法](/upload/InfoBanner/zyjiaocheng/587/b824c2f2433f4ce89bd9b86fcf850c24.jpg)
sql server2000分页方式很多,效率吗 当到达10万级以上就有些吃力了,这里暂时不例出来了
sql server2005以上就有了row_number 也是一大进步,详情如下参考
Sql Server2005通用分页存储过程
CREATE PROCEDURE [dbo].[Common_GetPagedList]
(
@TableName nvarchar(100), --表名
@ColumnNames nvarchar(1000) = '*', --字段名集合(全部字段为*,其它逗号分隔)
@OrderClause nvarchar(1000), --排序从句(不包含order by)
@WhereClause nvarchar(1000) =N' 1=1 ', --条件从句(不包含where)
@PageSize int = 0, --每页记录数(0为所有)
@PageIndex int = 1, --页索引(从1开始)
@TotalRecord int output --返回总记录数
)
AS
BEGIN
if (@ColumnNames is null or @ColumnNames='') set @ColumnNames=' * '
if (@WhereClause is null or @WhereClause='') set @WhereClause=' 1=1 '
if (@OrderClause is null or @OrderClause='') set @OrderClause=' Id desc '
--处理开始点和结束点
Declare @StartRecord int;
Declare @EndRecord int;
Declare @TotalCountSql nvarchar(1200);
Declare @SqlString nvarchar(4000);
--统计记录
if(@TotalRecord is null OR @TotalRecord>=0)
begin
SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName +' where '+@WhereClause;
--select @TotalCountSql
EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回总记录数
end
if @PageSize>0
begin
if @PageIndex<1 set @PageIndex=1
set @StartRecord = (@PageIndex-1)*@PageSize + 1
set @EndRecord = @StartRecord + @PageSize - 1
set @SqlString = N'select row_number() over (order by '+ @OrderClause +') as rowId,'+@ColumnNames+' from '+ @TableName+' where '+@WhereClause;
set @SqlString ='select * from (' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' + ltrim(str(@EndRecord));
end
else
begin
set @SqlString='select '+@ColumnNames+' from '+ @TableName+' where '+@WhereClause +' order by '+@OrderClause
end
--select @SqlString
Exec(@SqlString)
END
您可能感兴趣的文章:
- 五种SQL Server分页存储过程的方法及性能比较
- SQL Server 分页查询通用存储过程(只做分页查询用)
- sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享
- 深入sql server 2005 万能分页存储过程的详解
- mssql 高效的分页存储过程分享
- SQL Server 2005通用分页存储过程及多表联接应用
- MSSQL MySQL 数据库分页(存储过程)
- 三种SQL分页查询的存储过程代码
- SQL通用存储过程分页,支持多表联合
- SQL分页查询存储过程代码分享
内容总结
以上是互联网集市为您收集整理的基于SqlServer通用分页存储过程的解决方法全部内容,希望文章能够帮你解决基于SqlServer通用分页存储过程的解决方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。