存储过程代码收集

None.gif   1 if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[Paging_RowCount] ' and   OBJECTPROPERTY (id, N ' IsProcedure ' =   1 )
None.gif  2
drop   procedure   [ dbo ] . [ Paging_RowCount ]
None.gif  3
GO
None.gif  
4
None.gif  5
SET  QUOTED_IDENTIFIER  ON  
None.gif  6
GO
None.gif  7
SET  ANSI_NULLS  ON  
None.gif  8
GO
None.gif  
9 -- -------------------------------------------------------------
None.gif
  10 --  分页存储过程(使用RowCount)  --edit by SiBen
None.gif
  11 --  summary:
None.gif
  12 --           获取表或表集合的分页数据
None.gif
  13 --           当多表连接时,sort列必须指定表名
None.gif
  14 -- -------------------------------------------------------------
None.gif
  15
None.gif 16
CREATE   PROCEDURE  Paging_RowCount
None.gif 
17 (
None.gif 
18 @Tables   varchar ( 1000 ),
None.gif 
19 @PK   varchar ( 100 ),
None.gif 
20 @Sort   varchar ( 200 =   NULL ,
None.gif 
21 @PageNumber   int   =   1 ,
None.gif 
22 @PageSize   int   =   10 ,
None.gif 
23 @Fields   varchar ( 1000 =   ' * ' ,
None.gif 
24 @Filter   varchar ( 1000 =   NULL ,
None.gif 
25 @Group   varchar ( 1000 =   NULL ,
None.gif 
26 @RecordCount   int   =   0  output 
None.gif 
27 )
None.gif 28
AS
None.gif 
29
ExpandedBlockStart.gifContractedBlock.gif 
30 /**/ /**/ /**/ /*Default Sorting*/
None.gif 31
IF   @Sort   IS   NULL   OR   @Sort   =   ''
None.gif 
32      SET   @Sort   =   @PK
None.gif 
33
ExpandedBlockStart.gifContractedBlock.gif 
34 /**/ /**/ /**/ /*Find the @PK type*/
None.gif 35
DECLARE   @SortTable   varchar ( 100 )
None.gif 36
DECLARE   @SortName   varchar ( 100 )
None.gif 37
DECLARE   @strSortColumn   varchar ( 200 )
None.gif 38
DECLARE   @operator   char ( 2 )
None.gif 39
DECLARE   @type   varchar ( 100 )
None.gif 40
DECLARE   @prec   int
None.gif 
41
ExpandedBlockStart.gifContractedBlock.gif 
42 /**/ /**/ /**/ /*Set sorting variables.*/     
None.gif 43
IF   CHARINDEX ( ' DESC ' , @Sort ) > 0
None.gif 
44      BEGIN
None.gif 
45          SET   @strSortColumn   =   REPLACE ( @Sort ' DESC ' '' )
None.gif 
46          SET   @operator   =   ' < '
None.gif 
47      END
None.gif 48
ELSE
None.gif 
49      BEGIN
None.gif 
50          IF   CHARINDEX ( ' ASC ' @Sort >   0
None.gif 
51              SET   @strSortColumn   =   REPLACE ( @Sort ' ASC ' '' )
None.gif 
52                  ELSE
None.gif 
53                          SET   @strSortColumn   =   @Sort
None.gif 
54
None.gif 
55          SET   @operator   =   ' > '
None.gif 
56      END
None.gif 
57
None.gif 
58
None.gif 59
IF   CHARINDEX ( ' . ' @strSortColumn >   0
None.gif 
60      BEGIN
None.gif 
61          SET   @SortTable   =   SUBSTRING ( @strSortColumn 0 CHARINDEX ( ' . ' , @strSortColumn ))
None.gif 
62          SET   @SortName   =   SUBSTRING ( @strSortColumn CHARINDEX ( ' . ' , @strSortColumn +   1 LEN ( @strSortColumn ))
None.gif 
63      END
None.gif 64
ELSE
None.gif 
65      BEGIN
None.gif 
66          SET   @SortTable   =   @Tables
None.gif 
67          SET   @SortName   =   @strSortColumn
None.gif 
68      END
None.gif 
69
None.gif 70
SELECT   @type = t.name,  @prec = c.prec
None.gif 71
FROM  sysobjects o 
None.gif 72
JOIN  syscolumns c  on  o.id = c.id
None.gif 73
JOIN  systypes t  on  c.xusertype = t.xusertype
None.gif 74
WHERE  o.name  =   @SortTable   AND  c.name  =   @SortName
None.gif 
75
None.gif 76
IF   CHARINDEX ( ' char ' @type >   0
None.gif 
77     SET   @type   =   @type   +   ' ( '   +   CAST ( @prec   AS   varchar +   ' ) '
None.gif 
78
None.gif 79
DECLARE   @strPageSize   varchar ( 50 )
None.gif 80
DECLARE   @strStartRow   varchar ( 50 )
None.gif 81
DECLARE   @strFilter   varchar ( 1000 )
None.gif 82
DECLARE   @strSimpleFilter   varchar ( 1000 )
None.gif 83
DECLARE   @strGroup   varchar ( 1000 )
None.gif 
84
ExpandedBlockStart.gifContractedBlock.gif 
85 /**/ /**/ /**/ /*Default Page Number*/
None.gif 86
IF   @PageNumber   <   1
None.gif 
87      SET   @PageNumber   =   1
None.gif 
88
ExpandedBlockStart.gifContractedBlock.gif 
89 /**/ /**/ /**/ /*Set paging variables.*/
None.gif 90
SET   @strPageSize   =   CAST ( @PageSize   AS   varchar ( 50 ))
None.gif 91
SET   @strStartRow   =   CAST ((( @PageNumber   -   1 ) * @PageSize   +   1 AS   varchar ( 50 ))
None.gif 
92
ExpandedBlockStart.gifContractedBlock.gif 
93 /**/ /**/ /**/ /*Set filter & group variables.*/
None.gif 94
IF   @Filter   IS   NOT   NULL   AND   @Filter   !=   ''
None.gif 
95      BEGIN
None.gif 
96          SET   @strFilter   =   '  WHERE  '   +   @Filter   +   '   '
None.gif 
97          SET   @strSimpleFilter   =   '  AND  '   +   @Filter   +   '   '
None.gif 
98      END
None.gif 99
ELSE
None.gif
100      BEGIN
None.gif
101          SET   @strSimpleFilter   =   ''
None.gif
102          SET   @strFilter   =   ''
None.gif
103      END
None.gif104
IF   @Group   IS   NOT   NULL   AND   @Group   !=   ''
None.gif
105      SET   @strGroup   =   '  GROUP BY  '   +   @Group   +   '   '
None.gif106
ELSE
None.gif
107      SET   @strGroup   =   ''
None.gif
108
ExpandedBlockStart.gifContractedBlock.gif
109 /**/ /**/ /**/ /*Get rows count.*/
None.gif110
DECLARE   @str_Count_SQL   nvarchar ( 500 )
None.gif111
SET   @str_Count_SQL =   ' SELECT @TotalCount=count(*) FROM  '   +   @Tables   +   @strFilter
None.gif112
EXEC  sp_executesql  @str_Count_SQL ,N ' @TotalCount int=0 output ' , @RecordCount  output
None.gif
113     
ExpandedBlockStart.gifContractedBlock.gif
114 /**/ /**/ /**/ /*Execute dynamic query*/     
None.gif115
IF   @Sort   =   @PK
None.gif
116      BEGIN
None.gif
117          EXEC (
None.gif
118          '
None.gif119        DECLARE @SortColumn 
'   +   @type   +   '
None.gif120        SET ROWCOUNT 
'   +   @strStartRow   +   '
None.gif121        SELECT @SortColumn=
'   +   @strSortColumn   +   '  FROM  '   +   @Tables   +   @strFilter   +   '   '   +   @strGroup   +   '  ORDER BY  '   +   @Sort   +   '
None.gif122        SET ROWCOUNT 
'   +   @strPageSize   +   '
None.gif123        SELECT 
'   +   @Fields   +   '  FROM  '   +   @Tables   +   '  WHERE  '   +   @strSortColumn   +   @operator   +   ' = @SortColumn  '   +   @strSimpleFilter   +   '   '   +   @strGroup   +   '  ORDER BY  '   +   @Sort   +   '
None.gif124        
'
None.gif
125         )
None.gif
126      END
None.gif127
ELSE
None.gif
128      BEGIN
None.gif
129          EXEC (
None.gif
130          '
None.gif131        DECLARE @SortColumn 
'   +   @type   +   '
None.gif132        DECLARE @SortNullValue 
'   +   @type   +   '
None.gif133        DECLARE @PKStartValue int
None.gif134        SET @SortNullValue=CAST(
''''  as  ' +   @type   + ' )
None.gif135        SET ROWCOUNT 
'   +   @strStartRow   +   '
None.gif136        SELECT @SortColumn= isNull(
'   +   @strSortColumn   +   ' ,@SortNullValue), @PKStartValue =  ' +   @PK   + '  FROM  '   +   @Tables   +   @strFilter   +   '   '   +   @strGroup   +   '  ORDER BY  '   +   @Sort   +   ' , ' +   @PK   + '  Desc 
None.gif137        SET ROWCOUNT 
'   +   @strPageSize   +   '
None.gif138        SELECT 
'   +   @Fields   +   '  FROM  '   +   @Tables   +   '  WHERE (isNull( '   +   @strSortColumn + ' ,@SortNullValue) '   +   @operator   +   '  @SortColumn or (isNull( '   +   @strSortColumn + ' ,@SortNullValue)=@SortColumn and  ' +   @PK   + ' <=@PKStartValue)) '   +   @strSimpleFilter   +   '   '   +   @strGroup   +   '  ORDER BY  '   +   @Sort   +   ' , ' +   @PK   + '  Desc
None.gif139        
'
None.gif
140         )
None.gif
141      END
None.gif142
GO
None.gif143
SET  QUOTED_IDENTIFIER  OFF  
None.gif144
GO
None.gif145
SET  ANSI_NULLS  ON  
None.gif146
GO
None.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值