当前位置: 网学 > 编程文档 > ASP > 正文

以前写的一个分页存储过程,刚才不小心翻出来的

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/17

鉴于大家对ASP十分关注,我们编辑小组在此为大家搜集整理了“以前写的一个分页存储过程,刚才不小心翻出来的”一文,供大家参考学习!

CREATE PROCEDURE GoalerPageSp
@IntPageSize int,
@IntCurrPage int,
@strFields nvarchar(2000),
@strTable varchar(200),
@strWhere varchar(800),
@strOrderType varchar(200),
@strKeyField varchar(50)
AS
SET NOCOUNT ON
DECLARE @tmpSQL nvarchar(4000)--存放动态SQL语句
DECLARE @tmpWhere varchar(800)
DECLARE @tmpAndWhere varchar(800)--用于第N(>1)页上边的查询条件
DECLARE @tmpOrder varchar(200)
DECLARE @tmpD_X varchar(2)
DECLARE @tmpMin_MAX varchar(3)

--设置条件--
IF @strWhere IS NULL OR RTRIM(@strWhere)=''''
BEGIN --没有查询条件
SET @tmpWhere=''''
SET @tmpAndWhere=''''
END
ELSE
BEGIN --有查询条件
SET @tmpWhere='' WHERE ''+@strWhere
SET @tmpAndWhere='' AND ''+@strWhere
END

--设置排序--
IF @strOrderType != 0
BEGIN--倒序
SET @tmpD_X = ''<''
SET @tmpMin_MAX = ''MIN''
SET @tmpOrder='' ORDER BY '' +@strKeyField+ '' DESC''
END
ELSE
BEGIN
SET @tmpD_X = ''>''
SET @tmpMin_MAX = ''MAX''
SET @tmpOrder='' ORDER BY '' +@strKeyField+ '' ASC''
END
--SQL查询--
IF @IntCurrPage=1
Set @tmpSQL=''SELECT TOP ''+CAST(@IntPageSize AS VARCHAR)+'' ''+@strFields+'' FROM ''+@strTable+'' ''+@tmpWhere+'' ''+@tmpOrder
ELSE
SET @tmpSQL=''SELECT TOP ''+CAST(@IntPageSize AS VARCHAR)+'' ''+@strFields+'' FROM ''+@strTable+'' WHERE (''+@strKeyField+'' ''+@tmpD_X+'' (SELECT ''+@tmpMin_MAX+''(''+@strKeyField+'') FROM (SELECT TOP ''+CAST(@IntPageSize*(@IntCurrPage-1) AS VARCHAR)+'' ''+@strKeyField+'' FROM ''+@strTable+'' ''+@tmpWhere+'' ''+@tmpOrder+'') AS T))''+@tmpAndWhere+'' ''+@tmpOrder
EXEC(@tmpSQL)
GO

调用方法:
IntPageSize=20
strTable=" [TableName] " ''数据表名称
strFields=" Field1,Field2,Field3,Field4 " ''需要读取的列名
strKeyField="Field1" ''主键:这里假设Field1为主键
strWhere="" ''条件:FieldA=''b''
strOrderType=1 ''排序方式:1为倒序,0为顺序

CurrPage=Request.QueryString("Page")
IF(CurrPage<>"" And Isnumeric(CurrPage))THEN
CurrPage=CLNG(CurrPage)
IF(CurrPage<1)THEN CurrPage=1
ELSE
CurrPage=1
END IF

IF strWhere<>"" THEN
tmpWhere=" WHERE "&strWhere
ELSE
tmpWhere=""
END IF

IF(SESSION("RecCount")<>"")THEN
IF(SESSION("strWhere")<>strWhere)THEN
RecCount=Conn.Execute("SELECT COUNT("&strKeyField&") FROM "&strTable&tmpWhere)(0)
SESSION("RecCount")=RecCount
SESSION("strWhere")=strWhere
ELSE
RecCount=SESSION("RecCount")
END IF
ELSE
RecCount=Conn.Execute("SELECT COUNT(*) FROM "&strTable&tmpWhere)(0)
SESSION("RecCount")=RecCount
SESSION("strWhere")=strWhere
END IF

IF(RecCount MOD IntPageSize <>0)THEN
IntPageCount=INT(RecCount/IntPageSize)+1
ELSE
IntPageCount=RecCount/IntPageSize
END IF

SET Cmd=Server.CreateObject("Adodb.Command")
Cmd.CommandType=4
SET Cmd.ActiveConnection=Conn
Cmd.CommandText="GoalerPageSp"
Cmd.Parameters.Append Cmd.CreateParameter("@IntPageSize",4,1,4,IntPageSize)
Cmd.Parameters.Append Cmd.CreateParameter("@IntCurrPage",4,1,4,CurrPage)
Cmd.Parameters.Append Cmd.CreateParameter("@st
  • 上一篇资讯: 水印测试(重新测试)
  • 下一篇资讯: 用XMLHTTP来偷东西哈!
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号