zoukankan      html  css  js  c++  java
  • SQL 20052008 存储过程分页程序 ROW_NUMBER()

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:  fangjun
    -- Create date: 2010-9-21
    -- Description: SQL 2005-2008 存储过程分页程序
    -- exec pages 表名,主键,字段名,开始页码,页大小,Where条件,主键排序DESC/ASC
    -- =============================================
    CREATE PROCEDURE pages
    (
     @Tables varchar(1000),       --表名
     @PK varchar(100),            --主键
     @Fields varchar(1000) = '*', --字段名
     @Pageindex int = 1,          --开始页码
     @PageSize int = 10,          --页大小
     @Filter varchar(1000) = '',  --Where条件,不能为null
     @Sort varchar(200) = ''      --排序字段, 不能为null
    )
    AS
    BEGIN
     --------------------------
     Declare @sql varchar(500);
     Declare @count int;
     --------------------------
     If Not IsNull(@Sort,'') = ''
      begin
       Set @Sort = 'DESC'
      end
      
     If Not IsNull(@Filter,'') = ''
      begin
       Set @Filter = 'where '+@Filter
      end
     --------------------------
     begin
     
      set @sql = 'WITH [tempTable] AS (SELECT '+@Fields+''+
           ', ROW_NUMBER() OVER (ORDER BY '+@PK+' '+@Sort+') AS ''RowNumber'' '+
           'FROM '+@Tables+' '+@Filter+') SELECT '+@Fields+' FROM [tempTable] WHERE '+
           'RowNumber BETWEEN '+convert(varchar(20),@Pageindex)+' AND '+
           convert(varchar(20),@PageSize)
     end   
     --------------------------
     Exec (@sql)
     --------------------------
     Print @count
    END


    GO

  • 相关阅读:
    64_l2
    64_l1
    64_k2
    64_k1
    64_j2
    64_j1
    64_g6
    64_g5
    64_g4
    64_g3
  • 原文地址:https://www.cnblogs.com/bdzwater/p/2210817.html
Copyright © 2011-2022 走看看