快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

通用分页的存储过程函数

ALTER PROCEDURE Pagination
(
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = \\\'*\\\', -- 需要返回的列
@fldName varchar(255)=\\\'\\\', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = \\\'\\\' -- 查询条件 (注重: 不要加 where)
)
AS

/* 定义变量 */
declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型


if @doCount != 0
begin
if @strWhere !=\\\'\\\'
set @strSQL = \\\'select count(*) as Total from [\\\' + @tblName + \\\'] where \\\'+@strWhere
else
set @strSQL = \\\'select count(*) as Total from [\\\' + @tblName + \\\']\\\'
end
--以上代码的意思是假如@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType != 0 --假如@OrderType不是0,就执行降序,这句很重要!
begin
set @strTmp = \\\'<(select min\\\'
set @strOrder = \\\' order by [\\\' + @fldName +\\\'] desc\\\'
end
else
begin
set @strTmp = \\\'>(select max\\\'
set @strOrder = \\\' order by [\\\' + @fldName +\\\'] asc\\\'
end

if @PageIndex = 1
begin
if @strWhere != \\\'\\\'
set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\' + @tblName + \\\'] where \\\' + @strWhere + \\\' \\\' + @strOrder
else
set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\'+ @tblName + \\\'] \\\'+ @strOrder
--假如是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\'+ @tblName + \\\'] where [\\\' + @fldName + \\\']\\\' + @strTmp + \\\'([\\\'+ @fldName + \\\']) from (select top \\\' + str((@PageIndex-1)*@PageSize) + \\\' [\\\'+ @fldName + \\\'] from [\\\' + @tblName + \\\']\\\' + @strOrder + \\\') as tblTmp)\\\'+ @strOrder

if @strWhere != \\\'\\\'
set @strSQL = \\\'select top \\\' + str(@PageSize) +\\\' \\\'+@strGetFields+ \\\' from [\\\' + @tblName + \\\'] where [\\\' + @fldName + \\\']\\\' + @strTmp + \\\'([\\\' + @fldName + \\\']) from (select top \\\' + str((@PageIndex-1)*@PageSize) + \\\' [\\\' + @fldName + \\\'] from [\\\' + @tblName + \\\'] where \\\' + @strWhere + \\\' \\\' + @strOrder + \\\') as tblTmp) and \\\' + @strWhere + \\\' \\\' + @strOrder
end
end

exec (@strSQL)
返回类别: 教程
上一教程: 准确处理ASP动态网页中的容错机制
下一教程: 创建一个WEB投票系统

您可以阅读与"通用分页的存储过程函数"相关的教程:
· 一个高效的数据分页的存储过程
· 实现分页的例子-使用存储过程来实现分页
· 一个简朴的存储过程数据分页
· 存储过程分页
· ASP用存储过程实现数据分页
    微笑服务 优质保证 索取样品