超棒的存储过程分页写法

--Question获取所有列表(分页、排序)

 ---创建存储过程

 CREATE PROCEDURE [dbo].[Pr_Question_GetPagedListAll]  

             @StartRowIndex int, --起始记录号  

             @MaximumRows int, --记录数   

             @SortExpression varchar(1000) --排序字段

 AS BEGIN  --@SortExpression参数:请根据实际查询需要进行默认值设定

 SET NOCOUNT ON    

 ---声明查询语句、总行数、临时表

 DECLARE @SqlGet varchar(1600)  

 DECLARE @TotalRecords int    //创建表变量(总行数)

 CREATE TABLE #PageIndex    //创建临时表,存储数据主键 

  (   

       [IndexId] int IDENTITY (0, 1) NOT NULL,   

       [QuestionId] Int  

 )    

 ---设置排序条件

IF @SortExpression IS NULL --OR (@SortExpression = '')     //获取排序条件

       SET @SortExpression = '' --请在此处设置默认值(同时启用上一行后半部分的判断)    

IF @SortExpression <> ''   

        SET @SortExpression = ' ORDER BY ' + @SortExpression    

 ---执行查询语句,设置表和总行数

SET @SqlGet = 'SELECT [QuestionId] FROM [dbo].[Question]  ' + @SortExpression    INSERT INTO #PageIndex  (   [QuestionId]  ) EXEC (@SqlGet)    

SET @TotalRecords = @@ROWCOUNT    //设置总行数

 ---根据分页值查询Question表对应数据

SELECT   biz.[QuestionId],  

              biz.[Title],   

              biz...  

FROM [dbo].[Question] biz, #PageIndex p  

WHERE   biz.[DraftQuestionId] = p.[DraftQuestionId] AND   

              p.IndexId >= @StartRowIndex AND   p.IndexId < @StartRowIndex + @MaximumRows  

ORDER BY p.IndexId       //将表组合进行查询,并分页

 ---关闭计数器并返回变量值

SET NOCOUNT OFF         //将计数器开关关闭

RETURN @TotalRecords  //设置返回总行数

END

GO

转载于:https://www.cnblogs.com/BeyondWJsel/archive/2012/02/09/2343708.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值