MSSQL分页存储过程
香水坏坏 发表于 2007-7-7 [Database]
SQL代码
- 自己改写的一个分页存储过程
- CREATE PROC Paging
- (
- @pageSize int,
- @pageIndex int,
- @pageField nvarchar(32),
- @countTotal bit=1,
- @fieldQuery nvarchar(512),
- @tableQuery nvarchar(512),
- @whereQuery nvarchar(2048),
- @orderQuery nvarchar(512)
- )
- AS
- DECLARE @bdate Datetime
- SET @bdate = getdate()
- DECLARE @itemcount int
- SET @itemcount=@pageIndex*@pageSize
- DECLARE @itemlowwer int
- SET @itemlowwer=(@pageIndex-1)*@pageSize
- DECLARE @cmd nvarchar(3062)
- IF @pageIndex=1
- SET @cmd =’SELECT TOP ‘+CAST(@pageSize AS NVARCHAR)+’ ‘+@fieldQuery+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+@orderQuery
- ELSE
- SET @cmd=’SELECT ‘+@fieldQuery+’ FROM ‘+@tableQuery+’ WHERE ‘+@pageField+’ IN (SELECT TOP ‘+CAST(@itemcount as nvarchar)+’ ‘+@pageField+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+ @orderQuery+’)
- AND ‘+@pageField+’ NOT IN (SELECT TOP ‘ +CAST(@itemlowwer as nvarchar)+’ ‘+@pageField+’ FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery+’ ORDER BY ‘+ @orderQuery+’)’
- –print @cmd
- EXEC(@cmd)
- SELECT DATEDIFF( ms , @bdate , getdate() )
- IF @countTotal =1
- BEGIN
- SET @cmd = ‘SELECT COUNT( 0) FROM ‘+@tableQuery+’ WHERE ‘+@whereQuery
- EXEC(@cmd)
- END
- GO
访客评论
发表评论
- 你的姓名:
- 你的网站:
- EMAIL:
- 评论内容:
- 私人

