sql分页存取过程代码(升序)

 采用的是sql分页中效率高的双top方法,代码有简单的注释,我就不多解释了。

为了减少使用时的代码,我把全部搜索和有条件搜索的分开了。下面的是按升序排列的代码。

注意必须要用select top后面不能之间加变量,所以先连成字符串动态执行。

 

[CODE=mysql]
——-升序排列——无条件
CREATE procedure Pr_GetArticles —-这里为存储过程名称
@page int ,
@pagenum int
AS
DECLARE @tablename nvarchar(20)
set @tablename=’Article’ —–表名
DECLARE @idname nvarchar(20)
set @idname=’Article_Id’ —–表ID名
declare @strSQL nvarchar(4000)
DECLARE @TopNum int
SET @TopNum=(@page-1)*@pagenum
set @strSQL=N’select top’+ STR(@pagenum)+’ *
FROM ‘+@tablename+’
WHERE ‘+@idname+’>
(
select ISNULL(max(‘+@idname+’),0)
FROM
(
select TOP ‘+STR( @TopNum)+’ ‘+@idname+’ from ‘+@tablename+’ order by ‘+@idname+’
) A
)
order by ‘+@idname+”
print (@strSQL)
exec(@strSQL)
GO

——-升序排列——有条件
CREATE procedure Pr_GetArticles —-这里为存储过程名称
@page int ,
@pagenum int
AS
DECLARE @tablename nvarchar(20)
set @tablename=’Article’ —–表名
DECLARE @idname nvarchar(20)
set @idname=’Article_Id’ —–表ID名
DECLARE @condition nvarchar(3000)
set @condition=’Article_State=”已审核”‘ —–这里写条件
declare @strSQL nvarchar(4000)
DECLARE @TopNum int
SET @TopNum=(@page-1)*@pagenum
set @strSQL=N’select top’+ STR(@pagenum)+’ *
FROM ‘+@tablename+’
WHERE ‘+@idname+’>
(
select ISNULL(max(‘+@idname+’),0)
FROM
(
select TOP ‘+STR( @TopNum)+’ ‘+@idname+’ from ‘+@tablename+’ where ‘+@condition+’ order by ‘+@idname+’
) A
) and ‘+ @condition +’
order by ‘+@idname+”
print (@strSQL)
exec(@strSQL)
GO
[/CODE]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据