数据库分页存储过程代码

复制代码 代码如下:
/* 
数据库分页存储过程,支持倒序和升序 
参数说明: 
  @tablename:为搜索表名 
  @tablefield:为表的字段,约定为表的主键, 
  @where:为搜索表名,要显示所有记录请设为"1=1" 
  @orderby:为搜索结果排序,如order by id desc 
  @fieldlist:为字段列表,如userid, username 
  @curpage:当前页码 
  @page_record:每页记录条数 
  @Sort:排序标识(如果是倒序排,参数值为desc,为升序,参数值为asc,跟orderby参数是对应的) 
结果: 返回表tablename中满足条件where的第curpage页的page_record条记录,结果按orderby排序 
*/ 
CREATE PROCEDURE proc_CommonPaging

@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

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

SET @cmd = @cmd + '; SELECT COUNT(*) FROM '+@tablename+' WHERE '+@where

EXEC(@cmd) 
  PRINT(@cmd)

END 
GO

时间: 2024-10-28 04:44:03

数据库分页存储过程代码的相关文章

数据库分页存储过程代码_MsSql

复制代码 代码如下: /*  数据库分页存储过程,支持倒序和升序  参数说明:    @tablename:为搜索表名    @tablefield:为表的字段,约定为表的主键,    @where:为搜索表名,要显示所有记录请设为"1=1"    @orderby:为搜索结果排序,如order by id desc    @fieldlist:为字段列表,如userid, username    @curpage:当前页码    @page_record:每页记录条数    @Sor

数据库分页存储过程

存储过程|分页|数据|数据库 /*数据库分页存储过程---equn.net参数说明:?tablename为搜索表名?where为搜索表名,要显示所有记录请设为"1=1"?orderby为搜索结果排序,如order by id desc?curpage当前页码?page_record每页记录条数结果:?返回表tablename中满足条件where的第curpage页的page_record条记录,结果按orderby排序*/CREATE PROCEDURE Xp_Page(@tablen

两款sql 分页存储过程代码

文章收藏了两款sql 分页存储过程代码,这二款存储过程是二款高效分页存储过程代码,如果你觉得自己写的语句不够,强的话,可以利用我们现成的高效分页存储过程实例代码. create procedure pages @tablenames varchar(200), --表名,可以是多个表,但不能用别名 @primarykey varchar(100), --主键,可以为空,但@order为空时该值不能为空 @fields varchar(800), --要取出的字段,可以是多个表的字段,可以为空,为

.NET分页存储过程代码及使用

最近需要做个论坛,其中用到了分页,如果把整表的数据都查询出来未免小题大做,而且还影响速度 ,所以百度了并私有化了一个分页存储过程,实现了调用. 好了,废话不多说,贴出代码: /**** 使用帮助 首先查询表总行数,再查询分页数据 查询行数传入参数:@doCount,@tblName 查询分页传入参数:@tblName,@PageSize,@PageIndex,@fldName *以上不带查询条件的查询 带条件的加参数:@strWhere *分页查询可以使用排序 参数:@OrderType ***

1&gt;通用分页存储过程代码及调用

Java代码   /*****************************************************  MySQL分页存储过程  吴剑 2009-07-02    *****************************************************/   DROP PROCEDURE IF EXISTS pr_pager;   CREATE PROCEDURE pr_pager(       IN     p_table_name        V

sqlserver 千万数量级分页存储过程代码_MsSql

复制代码 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go Create PROCEDURE [dbo].[SP_Pagination] /**//* *************************************************************** ** 千万数量级分页存储过程 ** *************************************************************** 参

针对SQL 2000 的分页存储过程代码分享_MsSql

复制代码 代码如下: ---------------------------------------------------- --针对SQL 2000 的分页存储过程 --Time:2008-9-25 ---------------------------------------------------- ALTER PROCEDURE [dbo].[uoSp_RecordPager] --要分页显示的表名,可多表连查,但不能使用别名. --例:uo_Article LEFT JOIN uo_

一个分页存储过程代码_MsSql

复制代码 代码如下: ------------------------------------ --用途:分页存储过程(对有主键的表效率极高) --说明: ------------------------------------ ALTER PROCEDURE [UP_GetRecordByPage] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 主键字段名 @PageSize int = 10, -- 页尺寸 @PageIndex

针对SQL 2000 的分页存储过程代码分享

复制代码 代码如下: ---------------------------------------------------- --针对SQL 2000 的分页存储过程 --Time:2008-9-25 ---------------------------------------------------- ALTER PROCEDURE [dbo].[uoSp_RecordPager] --要分页显示的表名,可多表连查,但不能使用别名. --例:uo_Article LEFT JOIN uo_