• 分页存储过程


    IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME='PageTest')
    DROP PROC PageTest
    GO
    CREATE PROCEDURE [dbo].[PageTest]
    @Table VARCHAR(1000), --表名,多表是请使用 tA a inner join tB b On a.AID = b.AID
    @TIndex NVARCHAR(100), --主键
    @Column NVARCHAR(2000) = '*',--要查询的字段,全部字段就为*
    @Sql NVARCHAR(3000) = '',--Where条件
    @PageIndex INT = 1, --开始页码
    @PageSize INT = 10, --每页查询数据的行数
    @Sort NVARCHAR(200) = '' --排序的字段

    AS

    DECLARE @strWhere VARCHAR(2000)
    DECLARE @strsql NVARCHAR(3900)
    IF @Sql IS NOT NULL AND len(LTRIM(RTRIM(@Sql)))>0
    BEGIN
    SET @strWhere = ' WHERE ' + @Sql + ' '
    END
    ELSE
    BEGIN
    SET @strWhere = ''
    END

    IF (charindex(LTRIM(RTRIM(@TIndex)),@Sort)=0)
    BEGIN
    IF(@Sort='')
    SET @Sort = @TIndex + ' DESC '
    ELSE
    SET @Sort = @Sort+ ' , '+@TIndex + ' DESC '
    END
    IF @PageIndex < 1
    SET @PageIndex = 1

    IF @PageIndex = 1
    BEGIN
    SET @strsql = 'SELECT TOP ' + str(@PageSize) +' '+@Column+ ' FROM ' + @Table + ' ' + @strWhere + ' ORDER BY '+ @Sort
    END
    ELSE
    BEGIN

    DECLARE @START_ID NVARCHAR(50)
    DECLARE @END_ID NVARCHAR(50)
    SET @START_ID = convert(NVARCHAR(50),(@PageIndex - 1) * @PageSize + 1)
    SET @END_ID = convert(NVARCHAR(50),@PageIndex * @PageSize)
    SET @strsql = ' SELECT '+@Column+ '
    FROM (SELECT ROW_NUMBER() OVER(ORDER BY '+@Sort+') AS RowNum,
    '+@Column+ '
    FROM '+@Table +' WITH(NOLOCK) ' + @strWhere +') AS D
    WHERE RowNum BETWEEN '+@START_ID+' AND ' +@END_ID +' ORDER BY '+@Sort
    END
    EXEC(@strsql)
    PRINT @strsql
    SET @strsql = 'SELECT Count(1) as TotalRecords FROM ' + @Table +' WITH(NOLOCK) ' + @strWhere
    PRINT @strsql
    EXEC(@strsql)

    萌橙 你瞅啥?
  • 相关阅读:
    如何修改tomcat默认端口号8080的方法
    mybatis中的一对多
    mysql中left join设置条件在on与where时的用法区别分析
    登录不会走自定义的FormAuthenticationFilter及其onLoginSuccess原因
    (六)SpringIoc之延时加载
    (五)SpringIoc之Bean的作用域
    (三)SpringIoc之初了解
    (二)Spring容器
    (一)Spring之初了解
    值传递和引用传递
  • 原文地址:https://www.cnblogs.com/daimaxuejia/p/10275894.html
Copyright © 2020-2023  润新知