数据库分页存储过程代码

2016-02-19 11:47 4 1 收藏

图老师小编精心整理的数据库分页存储过程代码希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

代码如下:

/* 
数据库分页存储过程,支持倒序和升序 
参数说明: 
  @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 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1598603.html

延伸阅读
标签: SQLServer
if exists(  select * from sysobjects   where name='pr_backup_db' and xtype='p'  ) begin  drop proc pr_backup_db end go /*备份数据库*/ create proc pr_backup_db @flag varchar(10) out, @backup_db_name varchar(128), @filename varchar(1000)  --路径+文件名字 as declare @sql nvarchar(4000),@par nvar...
CREATE PROCEDURE pageTest --用于翻页的测试 --需要把排序字段放在第一列 ( @FirstID nvarchar(20)=null, --当前页面里的第一条记录的排序字段的值 @LastID nvarchar(20)=null, --当前页面里的最后一条记录的排序字段的值 @isNext bit=null, --true 1 :下一页;false 0:上一页 @allCount int output, --返回总记录数 @pageSize int output, -...
怎样才能将在表A取得的数据插入另一个表B中? (1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用 insert INTO B select * FROM A; insert INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A; (2) 对于两个表如果字段数不一样,但是有几个字段的结构一样时...
代码如下: --使用说明 本代码适用于MsSql2000,对于其它数据库也可用.但没必要 --创建存储过程 CREATE PROCEDURE pagination @tblName varchar(255), -- 表名 @strGetFields varchar(1000) = '*', -- 需要返回的列 @fldName varchar(255)='', -- 排序的字段名(可包含如TABLE.FLDNAME形式) @PageSize int = 10, -- 页尺寸 @PageIndex in...
标签: Web开发
CREATE PROC myx_prPageRecordset @queryStr nvarchar(1000),  @keyField nvarchar (200),  @pageSize int,  @pageNumber int  AS BEGIN DECLARE @sqlText AS nvarchar(4000) DECLARE @sqlTable AS nvarchar(4000) SET @sqlTable =&n...

经验教程

947

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部