《拓文asp.net网站内容管理系统》官方演示站。
 设为首页  
 收藏本站
 作者:黄振安
 QQ:53854651
首 页 开源拓文.NET编程网站编程网页设计图形图像数据库软件工程留言本
    站内搜索:  
您现在的位置: 拓文网络 → 网站编程 → ASP → 通用分页显示查询存储过程[正文]

热 门 文 章

相 关 文 章
  • ASP.NET性能优化
  • ASP脚本循环语句
  • 在.NET框架应用程序中发送电子邮件
  • .net打包自动安装数据库
  • asp.net开发wap必备:更好的匹配手机设备
  • 用ashx动态生成文件
  • windows 2003下asp.Net站点无法使用用户名+密码的方
  • ASP.NET中17种正则表达式
  • 提高ASP.Net应用程序性能的十大方法
  • 一个通过web.Mail发送邮件的类
  • 通用分页显示查询存储过程
     
    [作者:不详    转贴自:不详    点击数:    更新时间:2006-3-13 8:50:36]

    /*
    功能描述: 通用分页显示查询
    条件:表中不存在标示递增字段
    输入参数:
    @tblName: 表名
    @strGetFields: 需要返回的列 '*':返回所以列信息
    @fldName: 排序的字段名
    @OrderType: 设置排序类型, 非 0 值则降序
    @PageSize: 页尺寸
    @PageIndex: 页码
    @doCount: 返回记录总数, 非 0 值则返回
    @strOrderBy: 缺省排序字段信息 (注意: 不要加 ORDER BY)
    格式: Field1 DESC,Field2 ASC,
    @strWhere: 查询条件 (注意: 不要加 WHERE)
    输出参数: @RecordCount: 记录总数
    作 者: ningfeiyang
    创建时间: 2005-01-19

    */
    Create PROCEDURE Pagination
    (
    @tblName varchar(255),
    @strGetFields varchar(1000) = '*',
    @fldName varchar(255) = '',
    @PageSize int = 10,
    @PageIndex int = 1,
    @doCount bit = 0,
    @OrderType bit = 0,
    @strOrderBy varchar(500) = '',
    @strWhere varchar(1500) = '',
    @RecordCount int output
    )
    AS
    DECLARE @strSQL varchar(5000) -- 主语句
    DECLARE @strTmp varchar(200) -- 临时变量
    DECLARE @strOrder varchar(400) -- 排序变量

    --如果@doCount传递过来的不是0,就执行总数统计
    IF (@doCount != 0)
    BEGIN
    DECLARE @sWhere varchar(2000)

    SET @sWhere = ''
    IF (@strWhere != '')
    SET @sWhere = ' WHERE ' + @strWhere

    SET @strSQL = 'if exists (select * from dbo.sysobjects where id = object_id(''[dbo].[tmpTable]'') and OBJECTPROPERTY(id, ''IsUserTable'') = 1) '
    SET @strSQL = @strSQL + ' UPDATE tmpTable SET Total = (SELECT COUNT(*) FROM [' + @tblName + '] ' + @sWhere + ') '
    SET @strSQL = @strSQL + ' ELSE SELECT COUNT(*) AS Total INTO tmpTable FROM [' + @tblName + '] ' + @sWhere

    EXEC (@strSQL)

    SELECT @RecordCount=Total FROM tmpTable

    --删除总数统计临时表
    EXEC ('DROP TABLE tmpTable')
    END

    --PRINT @RecordCount

    --如果@OrderType不是0,就执行降序
    IF (@OrderType != 0)
    BEGIN
    SET @strTmp = ' < (SELECT MIN'
    SET @strOrder = ' ORDER BY ' + @strOrderBy + '[' + @fldName + '] DESC'
    END
    ELSE
    BEGIN
    SET @strTmp = ' > (SELECT MAX'
    SET @strOrder = ' ORDER BY ' + @strOrderBy + '[' + @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
    --为搜索表建立自动编号 保存到临时表中
    SET @strSQL = 'SELECT TOP ' + str(@PageIndex*@PageSize) + ' IDENTITY(int,1,1) AS IID, ' + @strGetFields + ' INTO #tmpTable FROM [' + @tblName + ']'
    IF @strWhere != ''
    SET @strSQL = @strSQL + ' WHERE ' + @strWhere + ' ' + @strOrder
    ELSE
    SET @strSQL = @strSQL + @strOrder

    --以下代码赋予了@strSQL以真正执行的SQL代码
    SET @strSQL = @strSQL + ' SELECT TOP ' + str(@PageSize) + ' ' + @strGetFields + ' FROM #tmpTable'
    + ' WHERE IID ' + @strTmp + '(IID) FROM (SELECT TOP ' + str((@PageIndex-1)*@PageSize) + ' IID FROM #tmpTable) AS tblTmp) DROP TABLE #tmpTable'
    END

    --PRINT @strSQL

    --执行分页查询
    EXEC (@strSQL)
    首页 | 1 | 尾页  共 1 页
     
    hch004 打印本页 关闭窗口

         文 章 评 论
    评论人 查看该文章的评论 发表时间
       笔 名* : 0 50分 60分 70分 80分 90分 100分
    评论内容 *: (最多1000字。当前字数:0)


    50 分axliumf这个跟本不能用啊,是不是骗人的啊2006-3-15 17:34:08

    - 关于本站 - 网站帮助 - 下载声明 - 友情连接 - 网站地图 -
    Copyright © 2005-2006 myTopWin.Com. All Rights Reserved . [桂ICP备06004496号]