zoukankan      html  css  js  c++  java
  • sql 分页存储过程

      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
  • 相关阅读:
    201571030142 四则运算
    略读《构建之法》
    基于原型的软件需求获取
    Java实现小学四则运算练习系统(UI)
    Java实现小学四则运算练习
    201571030104+ 快速通读教材《现代软件工程——构建之法》
    对pow函数的思考
    mysql转移后,启动失败问题
    递归
    requests+re(正则)之猫眼top100排名信息爬取
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/4672644.html
Copyright © 2011-2022 走看看