• 超棒的存储过程分页写法


    --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

  • 相关阅读:
    线段树的一种简化实现[原] by 踏雪赤兔
    C 语言qsort 函数详解
    【转载】Amit’s A star Page 中译文
    Poj3468 线段树 成段更新
    在VMware的CentOS中运行Cadence IC 615的怪现象
    安装非认证的chrome插件和设置文件夹的权限
    [模拟IC]基础知识1
    如何删除 Windows.old 文件夹?
    美国签证面签经历
    三个不同属性的GTD工具
  • 原文地址:https://www.cnblogs.com/BeyondWJsel/p/2343708.html
Copyright © 2020-2023  润新知