一个项目中正在使用的SQL分页存储过程
2008-01-30 18:17
666 查看
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
Create PROCEDURE [dbo].[Common_Pagination]
@tablename varchar(100),
@tablefield varchar(20),
@where varchar(5000),
@orderby varchar(500),
@fieldlist varchar(1000),
@curpage int,
@page_record int,
@sort varchar(8)
AS
BEGIN
DECLARE @cmd varchar(8000)
DECLARE @uprecord int
DECLARE @Op varchar(2) -- 操作符
DECLARE @max_min varchar(4) -- 最大/最小计算
SET @op = '<'
SET @max_min = 'MIN'
IF @sort = 'asc'
BEGIN
SET @Op = '>'
SET @max_min = 'MAX'
END
SET @uprecord=@curpage * @page_record
SET @where = '('+@where+')'
IF @curpage = 0
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+' FROM '+@tablename+' WHERE '+@where+' '+@orderby
ELSE
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+' FROM '+@tablename+' WHERE '+@where+' AND '+@tablefield+'
'+@op+' (SELECT '+@max_min+'('+@tablefield+') FROM (SELECT TOP '+cast(@uprecord AS NVARCHAR)+' '+@tablefield+' FROM '+@tablename+' WHERE
'+@where+' '+@orderby+') AS TmpTbl ) AND '+@where+' '+@orderby
EXEC(@cmd)
PRINT(@cmd)
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
GO
SET ANSI_NULLS ON
GO
Create PROCEDURE [dbo].[Common_Pagination]
@tablename varchar(100),
@tablefield varchar(20),
@where varchar(5000),
@orderby varchar(500),
@fieldlist varchar(1000),
@curpage int,
@page_record int,
@sort varchar(8)
AS
BEGIN
DECLARE @cmd varchar(8000)
DECLARE @uprecord int
DECLARE @Op varchar(2) -- 操作符
DECLARE @max_min varchar(4) -- 最大/最小计算
SET @op = '<'
SET @max_min = 'MIN'
IF @sort = 'asc'
BEGIN
SET @Op = '>'
SET @max_min = 'MAX'
END
SET @uprecord=@curpage * @page_record
SET @where = '('+@where+')'
IF @curpage = 0
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+' FROM '+@tablename+' WHERE '+@where+' '+@orderby
ELSE
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+' FROM '+@tablename+' WHERE '+@where+' AND '+@tablefield+'
'+@op+' (SELECT '+@max_min+'('+@tablefield+') FROM (SELECT TOP '+cast(@uprecord AS NVARCHAR)+' '+@tablefield+' FROM '+@tablename+' WHERE
'+@where+' '+@orderby+') AS TmpTbl ) AND '+@where+' '+@orderby
EXEC(@cmd)
PRINT(@cmd)
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
相关文章推荐
- 项目中正在使用的SQL分页存储过程
- 发一个分页存储过程,可以直接在.Net中使用
- 一个利用sql 语句来实现分页的存储过程
- 一个分页存储过程的使用
- 使用oracle 的 PL/Sql 定时执行一个存储过程
- 一个sql分页的存储过程
- 使用oracle 的 PL/Sql 定时执行一个存储过程
- SQL分页参数传值 在存储过程中使用 动态SQL实现
- 使用oracle 的 PL/Sql 定时执行一个存储过程
- 又一个不错的sql分页存储过程,支持排序、搜索
- SQL 使用系统存储过程实现的通用分页存储过程
- 自己修改一个别人的sql2005通用存储过程分页
- 一个SQL存储过程分页和ASP调用
- sql分页存储过程!与asp.net分页控件一起使用
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- 分页存储过程--一个简单的SQL存储过程
- 利用SQL未公开的存储过程实现分页(更加好用的一个!)
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名