yknb

 

 1set ANSI_NULLS ON
 2set QUOTED_IDENTIFIER ON
 3GO
 4
 5/***********************************************
 6名称:Proc_GetPageList
 7功能:分页存储过程
 8创建人:kangaroo
 9日期:2008/7/17
10***********************************************/

11ALTER PROCEDURE [dbo].[Proc_GetPageList]
12(
13    @Tables varchar(1000),          --表名
14    @PK varchar(100),               --主键    
15    @Fields varchar(1000= \'*\',    --查询的字段
16        @SortField varchar(200= NULL--排序的字段
17        @SortType varchar(10)= \'ASC\',   --排序方式
18    @PageIndex int = 1,             --页码索引
19    @PageSize int = 10,            --页码大小
20    @Filter varchar(1000= NULL,   --过滤条件
21        @PageCount int = 1 output,                  ----查询结果分页后的总页数
22    @RecordCounts int = 1 output                ----查询到的记录数
23)
24AS
25SET NOCOUNT ON
26declare @FieldName nvarchar(50)
27declare @SqlSort nvarchar(250)
28declare @SqlCount nvarchar(2000)
29declare @FromTemp nvarchar(1000)
30declare @SqlResult nvarchar(4000)
31declare @PageMinBound int  
32declare @PageMaxBound int 
33--------首先生成排序方法---------
34if @SortType=\'ASC\'  --升序
35    begin
36       if not(@SortField is null)
37      set @SqlSort = \' Order by \' + @SortField
38       else
39      set @SqlSort = \' Order by \' + @PK
40    end
41else            --降序
42    begin
43     if not(@SortField is null)
44      set @SqlSort = \' Order by \' + @SortField + \' DESC\'  
45     else
46      set @SqlSort = \' Order by \' + @PK + \' DESC \'
47    end
48--------生成查询语句--------
49if @Filter is null or @Filter=\'\' --没有设置显示条件
50     begin
51     set @FromTemp = \' From \' + @Tables
52     end
53else
54     begin
55     set @FromTemp = \' From \' + @Tables + \' where \' + @Filter
56     end
57set @SqlCount= \'select @RecordCounts=Count(\' + @PK + \'\'+@FromTemp
58----取得查询结果总数量-----
59exec sp_executesql @SqlCount,N\'@RecordCounts int out \',@RecordCounts out
60
61--取得分页总数
62if @RecordCounts<= @PageSize
63 set @PageCount = 1
64else
65 set @PageCount = (@RecordCounts / @PageSize+ 1
66
67if @PageIndex=1
68begin  --第一页用TOP方法来获取当前页记录
69   set @SqlResult=\'select top \'+str(@PageSize)+\' \'+@Fields+\' \'+@FromTemp+\' \'+@SqlSort
70end
71
72else
73begin --用临时表获取当前页计录
74    set @PageMinBound=(@Pageindex-1)*@Pagesize
75    set @PageMaxBound=@PageMinBound+@Pagesize
76    create table #Pageindex (id int identity(1,1not null,nid int)
77    set rowcount @PageMaxBound
78    set @SqlResult=\'insert into #Pageindex(nid) select \'+@PK+\' \'+@FromTemp+\' \'+@SqlSort
79    set @SqlResult=@SqlResult+\'   select \'+@Fields+\' from \'+@Tables+\'  a,#Pageindex p
80     where   a.\'+@PK+\'=p.nid and p.id>\'+str(@PageMinBound)+\' and p.id<=\'+str(@PageMaxBound)
81
82end
83print @SqlResult
84exec sp_executesql @SqlResult
85
86
87

分类:

技术点:

相关文章:

  • 2021-09-03
  • 2021-12-14
  • 2021-11-04
  • 2021-12-04
  • 2021-10-30
  • 2021-09-03
  • 2021-09-15
猜你喜欢
  • 2021-09-19
  • 2021-12-04
  • 2021-09-19
  • 2021-12-04
  • 2022-01-06
  • 2021-12-14
  • 2021-09-03
相关资源
相似解决方案