码迷,mamicode.com
首页 > 数据库 > 详细

sql 分页存储过程

时间:2015-07-24 10:36:45      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

  1 USE [FcityDB2]
  2 GO
  3 
  4 /****** Object:  StoredProcedure [dbo].[Proc_GetDataPaged]    Script Date: 2015/7/24 10:15:05 ******/
  5 SET ANSI_NULLS ON
  6 GO
  7 
  8 SET QUOTED_IDENTIFIER ON
  9 GO
 10 
 11 
 12 
 13 
 14 CREATE PROCEDURE [dbo].[Proc_GetDataPaged]
 15   @StrSelect  VARCHAR(max)=NULL,--欲显示的列(多列用逗号分开),例如:id,name
 16   @StrFrom    VARCHAR(max)= NULL,--表名称,或者是表连接字符串,多表连接例如:student as s inner join dwinfo as dw on s.dwbh=dw.bh
 17   @StrWhere   VARCHAR(max)=NULL,--查询条件,‘‘代表没有条件,单条件或者多条件,多条件例如:name=‘啊‘ and id=10
 18   @StrOrder   VARCHAR(max) =NULL,--排序列(多个排序列用逗号分开),例如:id desc,name as 
 19   @ItemCount  BIGINT output,--总记录数
 20   @PageSize   INT =50,--每页显示条数
 21   @BeginIndex INT=1,--记录开始数
 22   @SqlQuery VARCHAR(max) output
 23 AS
 24   BEGIN
 25       SET NOCOUNT ON;
 26       DECLARE @sql NVARCHAR(4000);
 27       DECLARE @totalRecord INT;
 28       --计算总记录数 
 29       IF ( @StrWhere = ‘‘‘‘
 30             OR @StrWhere = ‘‘
 31             OR @StrWhere IS NULL )
 32         SET @sql = select @totalRecord = count(*) from 
 33                    + @StrFrom
 34       ELSE
 35         SET @sql = select @totalRecord = count(*) from 
 36                    + @StrFrom +  where  + @StrWhere
 37 
 38       EXEC Sp_executesql
 39         @sql,
 40         N@totalRecord int OUTPUT,
 41         @ItemCount OUTPUT--计算总记录数 
 42     --  DECLARE @SqlQuery VARCHAR(max)
 43 
 44       IF( @BeginIndex = 1
 45            OR @BeginIndex = 0
 46            OR @BeginIndex < 0 )
 47         BEGIN
 48             IF( @StrWhere IS NULL )--if(@StrWhere=‘‘)
 49               SET @SqlQuery=select top  + CONVERT(VARCHAR, @PageSize)
 50                             +  row_number() over(order by  + @StrOrder
 51                             +  ) as RowNumber, + @StrSelect +  from 
 52                             + @StrFrom;
 53             ELSE
 54               SET @SqlQuery=select top  + CONVERT(VARCHAR, @PageSize)
 55                             +  row_number() over(order by  + @StrOrder
 56                             +  ) as RowNumber, + @StrSelect +  from 
 57                             + @StrFrom +  where  + @StrWhere;
 58         --exec (@SqlQuery)
 59         --      @SqlQuery
 60         END
 61       ELSE
 62         BEGIN
 63             IF( @StrWhere IS NULL )--if(@StrWhere=‘‘)
 64               BEGIN
 65                   SET @SqlQuery=with cte as (
 66 
 67 select row_number() over(order by 
 68                                 + @StrOrder +  ) as RowNumber, + @StrSelect
 69                                 +  from  + @StrFrom
 70                                 + 
 71 
 72 )
 73 select * from cte where RowNumber between 
 74                                 +    
 75                                 CONVERT(VARCHAR, (@BeginIndex-1)*@PageSize+1)
 76                                 +  and 
 77                                 + CONVERT(VARCHAR, @BeginIndex*@PageSize)
 78               --print @SqlQuery
 79               END
 80             ELSE
 81               BEGIN
 82                   SET @SqlQuery=with cte as (
 83 
 84 select row_number() over(order by 
 85                                 + @StrOrder +  ) as RowNumber, + @StrSelect
 86                                 +  from  + @StrFrom +  where  + @StrWhere
 87                                 + 
 88 
 89 )
 90 
 91 select * from cte where RowNumber between 
 92                                 +
 93                           
 94                                 CONVERT(VARCHAR, (@BeginIndex-1)*@PageSize+1)
 95                                 +  and 
 96                                 + CONVERT(VARCHAR, @BeginIndex*@PageSize)
 97               --print @SqlQuery
 98               END
 99         END
100 
101     
102      --   print @SqlQuery
103    --   EXEC (@SqlQuery)
104  --  select (@SqlQuery)
105   END
106 
107 
108 
109 
110 GO

 

sql 分页存储过程

标签:

原文地址:http://www.cnblogs.com/lyl6796910/p/4672644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!