教你快速掌握两个分页存储过程的用法

两个分页存储过程的用法:

[Basic_Pagination2005]:只能在SQLServer2005下用;

[Basic_Pagination2000]:可在SQLServer2000和SQLServer2005下通用;

两个存储过程的参数是一样的,其中的参数说明在代码中已有注释。

需要注意的是当@IsReCount=1时,会返回记录总数。所以在.NET中需用DataSet存放记录集。

第一个Table是要查询的字段数据,第二个Table便是记录总数。

1.Basic_Pagination2000

Create PROCEDURE [dbo].[Basic_Pagination2000]
@tblName      varchar(255),   -- 表名
@fidlelist    varchar(2000),  --要查询字段
@fldName      varchar(255),   -- 排序字段
@PageSize     int,            -- 页尺寸
@PageIndex    int,            -- 页码
@IsReCount    bit,            -- 返回记录总数, 非 0 值则返回
@OrderType    bit,            -- 设置排序类型, 非 0 值则降序
@strWhere     varchar(1000)   -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL   varchar(6000)       -- 主语句
declare @strTmp   varchar(100),@tmpwhere  varchar(200)        -- 临时变量
declare @strOrder varchar(400)        -- 排序类型

if @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
set @tmpwhere="";
if(@strWhere!="")
begin
set @tmpwhere=" where "+@strWhere;
end
if @PageIndex = 1
begin
set @strSQL = "select top " 
+ str(@PageSize) +" "+@fidlelist+" "+"from ["
+ @tblName + "] " + @tmpwhere + " " + @strOrder
end
else
begin
set @strSQL = "select top " 
+ str(@PageSize) + " "+@fidlelist+" "+"from ["
+ @tblName + "] where 
[" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from 
(select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from 
[" + @tblName + "] " + @tmpwhere + " "
+ @strOrder + ") as tblTmp)  
" + @tmpwhere + " " + @strOrder
end
exec(@strSQL)
if @IsReCount != 0
begin
set @strSQL = "select count(*) 
as Total from [" + @tblName + "]"+ @strWhere
exec (@strSQL)
end 数据挖掘实验室 

2.Basic_Pagination2005

ALTER PROCEDURE [dbo].[Basic_Pagination2005]
@tblName      nvarchar(200),     --表名
@fidlelist    nvarchar(1000),   --要查询字段
@fldName      nvarchar(100),    --排序字段
@PageSize     int,              --页尺寸
@PageIndex    int,              --页码
@IsReCount    bit ,             -- 返回记录总数, 非 0 值则返回
@OrderType    bit,              -- 设置排序类型, 非 0 值则降序
@strWhere nvarchar(1000)        --查询条件
AS
declare @sqlstr nvarchar(4000),
@tmpwhere nvarchar(4000),@tmporder nvarchar(100)
BEGIN
if @OrderType != 0
begin
set @tmporder = @fldName +" desc "
end
else
begin
        set @tmporder = @fldName +" asc "
end
set @tmpwhere="";
if(@strWhere!="")
begin
set @tmpwhere=" where "+@strWhere;
end
set @sqlstr=N"select * from
(select  "+@fidlelist+", ROW_NUMBER() OVER(order

by "+@tmporder+") as row from "+@tblName+@tmpwhere+") 
tmp where row between "+cast

(((@PageIndex-1)*@PageSize+1) as nvarchar)+" and "+cast

(@PageIndex*@PageSize as nvarchar);  
exec sp_executesql @sqlstr
if @IsReCount != 0
begin
set @sqlstr=N"select count(*) as Total from "+ @tblName+@tmpwhere
exec sp_executesql @sqlstr    
end
END 数据挖掘实验室 

(责任编辑:卢兆林)

数据挖掘实验室

数据挖掘研究院

Create By Any-Extract(WL-AE)

数据挖掘实验室

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:详细讲解有关获取当月天数的实用技巧
下一篇:实例讲解一个不用游标就可以实现的问题
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • MS SQL "1813"错误产生的原因及解决
  • SQL Server 2005的30个最重要特点
  • SQL Server数据仓库相关概念及构建流程
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - L
  • 使用 WebSphere Commerce Analyzer 以关联
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - P
  • SQL Server 2005 Integration Services - F
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • SQL Server 2005的30个最重要特点
  • 深入了解SQL Server数据库的线程与纤程
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静