时间:2016-02-15 23:15 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【SQL通用存储过程分页,支持多表联合】,下面是详细的讲解!
SQL通用存储过程分页,支持多表联合
ALTER proc [dbo].[SqlPager]
(
@tblName varchar(255), -- 表名(注意:可以多表链接)
@strGetFields varchar(1000)='*', -- 需要返回的列
@OrderfldName varchar(255)='', -- 排序的字段名
@PageSize int=10, -- 页尺寸
@PageIndex int=1, -- 页码
@doCount int=1 output, --查询到的记录数
@OrderType bit=0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(500)='' -- 查询条件 (注意: 不要加 where)
)
AS
declare @strSQL nvarchar(4000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(300) -- 排序类型
if @strWhere !=''
set @strSQL='select @doCount=count(*) from ' + @tblName + ' where '+@strWhere
else
set @strSQL='select @doCount=count(*) from ' + @tblName
exec sp_executesql @strSQL,N'@doCount int out',@doCount out
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
set @strSQL='';
if @OrderType !=0
begin
set @strTmp='<(select min'
set @strOrder=' order by [' + @OrderfldName +'] desc'--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set @strTmp='>(select max'
set @strOrder=' order by [' + @OrderfldName +'] asc'
end
if @PageIndex=1
begin
if @strWhere !=''
set @strSQL='select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder
else
set @strSQL='select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL='select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where [' + @OrderfldName + ']' + @strTmp + '(['+ @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @OrderfldName + '] from ' + @tblName + ' ' + @strOrder + ') as tblTmp)'+ @strOrder
if @strWhere !=''
set @strSQL='select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where [' + @OrderfldName + ']' + @strTmp + '(['
+ @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @OrderfldName + '] from ' + @tblName + ' where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
exec (@strSQL)
关于SQL通用存储过程分页,支持多表联合的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【asp】asp.net ubb使用代码-net-ubb使用
- 【默认图片】图片不存在使用默认图片代替的实例
- 【asp】asp.net 页面转向 Response.Redirect Ser
- 【jQuery】jQuery实现倒计时跳转的例子-倒计时跳
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
