SQL 分页 存储过程

    技术2026-03-29  6

    USE [数据库名] GO /****** Object:  StoredProcedure 存储过程名  GetPageData  Script Date: 02/18/2011 08:50:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author:cjh200102 -- Create date: 2011-2-18 -- Description:    分页 -- ============================================= ALTER PROCEDURE [dbo].[GetPageData] ( @tblName   varchar(255),       -- 表名 @strGetFields varchar(1000),  -- 需要返回的列 @fldName varchar(255),      -- 排序的字段名 @PageSize   int ,          -- 页尺寸 @PageIndex  int ,           -- 页码 @strWhere  varchar(1500),  -- 查询条件(注意: 不要加where) @Sort varchar(255)      --排序的方法 ) AS declare @strSQL   varchar(5000)       -- 主语句 declare @strTmp   varchar(110)        -- 临时变量 declare @strOrder varchar(400)        -- 排序类型 if @Sort = 'desc' begin set @strTmp = '<(select min' set @strOrder = ' order by ' + @fldName +' desc' --如果@OrderType不是,就执行降序,这句很重要! end else begin set @strTmp = '>(select max' set @strOrder = ' order by ' + @fldName +' asc' end   if @PageIndex = 1 begin if @strWhere != ''     begin set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '  from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder   end else   begin set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ '  from '+ @tblName + ' '+ @strOrder   end --如果是第一页就执行以上代码,这样会加快执行速度 end else   begin     if @strWhere != ''         begin               set @strSQL ='SELECT TOP ' + str(@PageSize) +' '+@strGetFields+  ' FROM '  + @tblName + ' WHERE (ID NOT IN(SELECT TOP '+ str(@PageSize*(@PageIndex-1))+ ' id FROM ' + @tblName + ' ' + ' where ' + @strWhere + ' ' + @strOrder+')) and '+ @strWhere + ' ' + @strOrder         --print @strSQL       end     else       begin              set @strSQL ='SELECT TOP ' + str(@PageSize) +' '+@strGetFields+  ' FROM '  + @tblName + ' WHERE (ID NOT IN(SELECT TOP '+ str(@PageSize*(@PageIndex-1))+ ' id FROM ' + @tblName + ' ' + @strOrder+'))' + ' ' + @strOrder         --print @strSQL       end --如果不是第一页就执行以上代码   end exec(@strSql) return --测试调用语句 --exec GetPageData '表名','字段1,字段2,字段3,字段4,字段5','排序字段',每页显示多少条,第几页,查询条件,排序的方法

    最新回复(0)