存储过程代码收集

None.gif  1if 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(@strSortColumn0CHARINDEX('.',@strSortColumn))
None.gif 
62        SET @SortName = SUBSTRING(@strSortColumnCHARINDEX('.',@strSortColumn+ 1LEN(@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 + 1AS 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值