存储过程分页(含带搜索等功能)
2007-08-29 08:22:53
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://51xingfu.blog.51cto.com/219185/40173 |
分页参数用到的只有
@PageIndex INT,
@PageSize INT, @RecordCount INT OUT, @PageCount INT OUT, 这4个,其他参数涉及到其他的功能,不做分析,看不懂的可以跟帖:
CREATE PROCEDURE InforManage_HuaGong123
( @PageIndex INT, @PageSize INT, @RecordCount INT OUT, @PageCount INT OUT, @channel NVarchar(10), @editor varchar(10),
@lookUnpassed char(1), @lookOwn char(1), @is_yc bit, @keyword VARCHAR(100) ) AS DECLARE @strSql NVARCHAR(4000) --Sql语句
DECLARE @strColumn NVARCHAR(1000) --要查询的列 DECLARE @strFrom NVARCHAR(100) --表 DECLARE @strOrder NVARCHAR(100) --第一页排序规则 DECLARE @strOrderIn NVARCHAR(100) --内层排序规则
DECLARE @strOrderOut NVARCHAR(100) --外层排序规则 DECLARE @strWhere NVARCHAR(1000) --查询条件 SET @strColumn = ' News_ID,News_Title,News_Date,Channel_Name,Column_Name,Class1_Name,Province,City,News_Edit,Click_Number,News_Weight,News_Verify '
SET @strFrom = ' FROM tb_News ' SET @strOrder = ' ORDER BY News_ID DESC ' SET @strOrderIn = ' ORDER BY News_ID ASC ) TempTable '
SET @strOrderOut = ' ORDER BY News_ID DESC ' if @lookOwn = ''
SET @strWhere = ' WHERE Channel_Name = ' + '''' + @channel + '''' else SET @strWhere = ' WHERE News_Edit = ' + '''' + @editor + ''''+ ' AND Channel_Name = '+ '''' + @channel + '''' if @lookUnpassed <> '' SET @strWhere = @strWhere + ' AND News_Verify is null ' if @is_yc <>0
SET @strWhere = @strWhere + ' AND IS_YC =1 ' IF @keyword <> ''
SET @strWhere = @strWhere + ' AND News_Title LIKE ' + '''' + @keyword + ''' ' DECLARE @sql NVARCHAR(1000) SET @sql = N'SELECT @RecordCount = COUNT(News_ID) FROM tb_News ' + @strWhere
EXEC sp_executesql @sql,N'@RecordCount INT OUTPUT',@RecordCount OUTPUT
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
IF @PageIndex = 0 OR @PageCount <= 1
SET @strSql =N'SELECT TOP ' + STR( @PageSize ) + @strColumn + @strFrom + @strWhere + @strOrder
ELSE IF @PageIndex = @PageCount - 1
SET @strSql =N'SELECT ' + @strColumn + ' FROM ( SELECT TOP '+ STR( @RecordCount - @PageSize * @PageIndex ) + @strColumn + @strFrom + @strWhere
+ @strOrderIn + @strOrderOut ELSE SET @strSql =N'SELECT TOP ' + STR( @PageSize ) + @strColumn + ' FROM ( SELECT TOP '+ STR( @RecordCount - @PageSize * @PageIndex ) + @strColumn + @strFrom + @strWhere + @strOrderIn + @strOrderOut EXEC (@strSql)
RETURN GO 本文出自 “幸福开心豆” 博客,请务必保留此出处http://51xingfu.blog.51cto.com/219185/40173 本文出自 51CTO.COM技术博客 |



adai6666
博客统计信息
热门文章
最新评论
友情链接