话不多说,请看代码

-------------------------------------
-----作者:张欣宇
-----时间:2013-06-28
-----简介:根据参数和条件分页查询
-------------------------------------
Create proc [dbo].[Up_PagingQueryByParameter]
(
 ----- 表名或能查询到结果的SQL语句{SQL语句左右必须有括号例:(select * from tbl1)}
 @TableName varchar(max),
 ----- 要查询的列名语句; 可空默认*
 @ColumnName varchar(5000),
 ----- 用来排序的列; 不可为空
 @OrderByColumnName varchar(50),
 ----- 排序desc(倒序5.4.3.2.1)或asc(正序1.2.3.4.5); 可空默认asc
 @ShrtBy varchar(4),
 ----- Where条件; 可空默认1=1
 @Where varchar(5000),
 ----- 每页显示数; 可空默认20
 @PageShows int,
 ----- 当前页数; 可空默认1
 @CurrentPage int,
 ----- 0为分页查询;其他为查询全部; 可空默认0
 @IsPaging int
)
as
begin
 ----- 参数检查及规范
 if isnull(@Where,N'')=N'' set @Where = N'1=1';
 if isnull(@ColumnName,N'')=N'' set @ColumnName = N'*';
 if isnull(@PageShows,0)<1 set @PageShows = 20;
 if isnull(@CurrentPage,0)<1 set @CurrentPage = 1;
 if isnull(@ShrtBy,N'')=N'' set @ShrtBy = 'asc';
 if isnull(@IsPaging,0)<>1 set @IsPaging = 0;
 ----- 定义
 -- 拼接的SQL语句
 declare @SqlStr nvarchar(max);
 declare @SqlWithStr nvarchar(max);
 -- 开始条数
 declare @StartIndex int;
 -- 结束条数
 declare @EndIndex int;
 ----- 赋值
 set @StartIndex = (@CurrentPage-1)*@PageShows+1;
 print(@CurrentPage);
 print(@PageShows);
 print(@StartIndex);
 set @EndIndex = @CurrentPage*@PageShows;
 print(@EndIndex);
 set @OrderByColumnName=@OrderByColumnName+' '+@ShrtBy;
 ----- 分页查询
 set @SqlWithStr = N'with temp as(select ROW_NUMBER() over(order by '+@OrderByColumnName+N') as RowNumber,'+@ColumnName+N' from '+@TableName+N' as tableName where '+@Where+N')';
 if(@IsPaging = 0)
 begin
 set @SqlStr = @SqlWithStr + N' select '+@ColumnName+N' from temp where temp.RowNumber between '+convert(nvarchar(20),@StartIndex)+N' and '+convert(nvarchar(20),@EndIndex)+N'';
 ---- print(@SqlStr);
 exec(@SqlStr);
 ----- 总数查询
 set @SqlStr = @SqlWithStr + N' select count(*) as TotalNumber from temp';
 ---- print(@SqlStr);
 exec(@SqlStr);
 end
 else
 begin
 set @SqlStr = @SqlWithStr + N' select '+@ColumnName+N' from temp';
 ---- print(@SqlStr);
 exec(@SqlStr);
 end
end

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。