ms sql存储过程


-- =============================================
-- Create date: <2006-11-05>
-- Description:    <高效分页存储过程,仅适用于Sql2005>
-- Notes:        <排序字段强烈建议建索引>
-- =============================================
create Procedure [dbo].[Page] 
 @TableName varchar(50),        --表名
 @Fields varchar(1000) = '*',    --字段名(全部字段为*)
 @OrderField varchar(1000),        --排序字段(必须!支持多字段)
 @sqlWhere varchar(1000) = Null,--条件语句(不用加where)
 @pageSize int,                    --每页多少条记录
 @pageIndex int = 1 ,            --指定当前为第几页
 @TotalPage int output            --返回总页数
as
begin

Begin Tran --开始事务

Declare @sql nvarchar(4000);
    Declare @totalRecord int;

--计算总记录数
         
    if (@SqlWhere='' or @sqlWhere=NULL)
        set @sql = 'select @totalRecord = count(*) from ' + @TableName
    else
        set @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhere

EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--计算总记录数       
    
    --计算总数量
    select @TotalPage=@totalRecord--CEILING((@totalRecord+0.0)/@PageSize)+1

if (@SqlWhere='' or @sqlWhere=NULL)
        set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName 
    else
        set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere    
        
    
    --处理页数超出范围情况
    if @PageIndex<=0 
        Set @pageIndex = 1
    
    if @pageIndex>@TotalPage
        Set @pageIndex = @TotalPage

--处理开始点和结束点
    Declare @StartRecord int
    Declare @EndRecord int
    
    set @StartRecord = (@pageIndex-1)*@PageSize + 1
    set @EndRecord = @StartRecord + @pageSize - 1

--继续合成sql语句
    set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' +  Convert(varchar(50),@EndRecord)
    --print @Sql
    Exec(@Sql)

--    print @totalRecord 
    If @@Error <> 0
      Begin
        RollBack Tran
        Return -1
      End
     Else
      Begin
        Commit Tran
        --print @totalRecord 
        Return @totalRecord ---返回记录总数
        
        
      End   
    
end

asp.net分页函数

 #region 获取分页的数据
        /// <summary>
        /// 获取分页的数据
        /// </summary>
        /// <param name="TblName">数据表名</param>
        /// <param name="Fields">要读取的字段</param>
        /// <param name="OrderField">排序字段</param>
        /// <param name="SqlWhere">查询条件</param>
        /// <param name="PageSize">每页显示多少条数据</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="TotalPage">返回值,共有多少页</param>
        /// <returns></returns>

public static DataSet PageData(string TblName, string Fields, string OrderField, string SqlWhere, int PageSize, int pageIndex, out int TotalPage)
        {
           
            TotalPage = 1;
            DbObject db = new DbObject();

string connString = db.ConnectionString;

SqlConnection conn = new SqlConnection(connString);
            SqlCommand comm = new SqlCommand("Page", conn);

comm.Parameters.Add(new SqlParameter("@TableName", SqlDbType.NVarChar, 100));
            comm.Parameters[0].Value = TblName;

comm.Parameters.Add(new SqlParameter("@Fields", SqlDbType.NVarChar, 1000));
            comm.Parameters[1].Value = Fields;

comm.Parameters.Add(new SqlParameter("@OrderField", SqlDbType.NVarChar, 1000));
            comm.Parameters[2].Value = OrderField;

comm.Parameters.Add(new SqlParameter("@sqlWhere", SqlDbType.NVarChar, 1000));
            comm.Parameters[3].Value = SqlWhere;

comm.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int));
            comm.Parameters[4].Value = PageSize;

comm.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int));
            comm.Parameters[5].Value = pageIndex;

comm.Parameters.Add(new SqlParameter("@TotalPage", SqlDbType.Int));
            comm.Parameters[6].Direction = ParameterDirection.Output;

comm.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);
            DataSet ds = new DataSet();
            dataAdapter.Fill(ds);
            TotalPage = (int)comm.Parameters[6].Value;

conn.Close();
            conn.Dispose();
            comm.Dispose();
            db.Dispose();
            return ds;
        }
        #endregion

分页代码显示

 #region 分页代码显示
        /// <summary>
        /// 分页代码显示
        /// </summary>
        /// <param name="Url">跳转地址</param>
        /// <param name="TotleNum">总数据量</param>
        /// <param name="NumPerPage">每页显示多少条</param>
        /// <param name="Thepage"></param>
        /// <param name="ShowJump">是否显示跳转按钮</param>
        /// <param name="pagestyle">显示风格</param>
        /// <returns></returns>
        public static string PageStr(string Url, int TotleNum, int NumPerPage, int Thepage, bool ShowJump, int pagestyle)
        {
            string strTemp;
            int n;
            int p;
            int ii;
            if (Convert.ToInt32(TotleNum) <= Convert.ToInt32(NumPerPage))
                return "";
            Url = Url.Trim();
            if (Url != "")
                Url += "&";

if (Convert.ToInt32(TotleNum) % Convert.ToInt32(NumPerPage) == 0)
            {
                n = TotleNum / NumPerPage;
            }
            else
            {
                n = TotleNum / NumPerPage + 1;
            }
            strTemp = "<table align=center  width=\"100%\"><tr><td align=\"center\">";

strTemp += "共 " + TotleNum + " 条记录 页次:" + Thepage + "/" + n + "页 ";
            strTemp += NumPerPage + "条/页 ";

if (Convert.ToInt32(pagestyle) == 1)
            {
                if (Convert.ToInt32(Thepage) < 2)
                    strTemp += "<font color=\"#999999\">首页 上页</font> ";
                else
                {
                    strTemp += "<a href=?" + Url + "page=1  class=\"link\">首页</a> ";
                    strTemp += "<a href=?" + Url + "page=" + (Thepage - 1) + "  class=\"link\">上页</a> "; ;
                }
                if (n - Convert.ToInt32(Thepage) < 1)
                {
                    strTemp += "<font color=\"#999999\">下页 尾页</font> ";
                }
                else
                {
                    strTemp += "<a href=?" + Url + "page=" + (Thepage + 1) + "  class=\"link\">下页</a> ";
                    strTemp += "<a href=?" + Url + "page=" + n + "  class=\"link\">尾页</a>  ";
                }
            }
            if (Convert.ToInt32(pagestyle) == 2)
            {
                if (Convert.ToInt32(Thepage) - 1 % 10 == 0)
                    p = (Thepage - 1) / 10;
                else
                    p = (Thepage - 1) / 10;

if (p * 10 > 0)
                    strTemp += "<a href=?" + Url + "page=" + p * 10 + " title=上十页 >[&lt;&lt;]</a>   ";
                int uming_i = 1;
                for (ii = p * 10 + 1; ii <= p * 10 + 10; ii++)
                {
                    if (ii == Thepage)
                        strTemp += "<strong><font color=#ff0000>[" + ii + "]</font></strong> ";
                    else
                        strTemp += "<a href=?" + Url + "page=" + ii + ">[" + ii + "]</a> ";
                    if (ii == n)
                        break;
                    uming_i = uming_i + 1;
                }
                if (ii <= n && uming_i == 11)
                    strTemp += "<a href=?" + Url + "page=" + ii + " title=下十页>[&gt;&gt;]</a>  ";
            }

if (ShowJump)
            {
                string guid = CreateCard(Guid.NewGuid().ToString());
                strTemp += "&nbsp;&nbsp;<script>function " + guid + "_a(){var " + guid + "_b=document.getElementById(\"" + guid + "_i\").value;var url=?"+ Url +"&page=+ "+ guid +"_b +;this.location.href=+ url +;}</script>转到:<input type=\"text\" name=\"" + guid + "_i\" id=\"" + guid + "_i\" style=\"width:20px;height:15px;\" /> 页&nbsp; <input name=\"pagebutton\" type=\"button\" value=\"跳转\" οnclick=\"return " + guid + "_a();\" />";
            }
            strTemp += "</td></tr></table>";
            return (string)strTemp;
        }
        #endregion

#region 显示页面输入框
        /// <summary>
        /// 显示页面输入框
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private static string CreateCard(string str)
        {
            string card = str;
            for (int i = 0; i <= 9; i++)
            {
                card = card.Replace(i.ToString(), "").Replace("-", "").ToUpper();

}

return card;

}
        #endregion

 分页调用示例 

 #region 分页
            string TblName = tbl;
            string Fields = "id,gxmc,zymc,wc,fs,pc,bwlqrs,bzylqrs,bzyzgf,zgfwc,bzyzdf,zdfwc,pjf,cs,xnwc,pro";//读取的字段
            string OrderField = " fs desc";//排序
            string SqlWhere = "";//条件
            if (!string.IsNullOrEmpty(pc))
            {
                SqlWhere = " pc in(" + pc + ")";
            }

int PageSize = 20; //分页大小
            int totalpage = 0;
            int pageIndex;
            string _page = "1";
            _page = Convert.ToString(Request.QueryString["page"]);
            if (string.IsNullOrEmpty(_page))
            {
                _page = "1";
            }
            else
            {
                _page = Fun.FilterSQL(_page);
            }
            if (_page == "0")
            {
                _page = "1";
            }
            pageIndex = Convert.ToInt32(_page);
            string pagestr= "";
            DataSet ds = GetPage.PageData(TblName, Fields, OrderField, SqlWhere, PageSize, pageIndex, out totalpage, conn2);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                string TR = " οnmοuseοver=\"this.style.background=#FFF9E8;\" οnmοuseοut=\"this.style.background=#FFFFFF;\"";

if (i % 2 == 0)
                {

TR = " class=\"alter\" οnmοuseοver=\"this.style.background=#FFF9E8;\" οnmοuseοut=\"this.style.background=#EBF3FD;\"";
                }

pagestr += "<tr " + TR + "><td> <input name=\"id\" value=\"" + ds.Tables[0].Rows[i]["id"].ToString() + "\" type=\"checkbox\" /></td><td>&nbsp;" + ds.Tables[0].Rows[i]["gxmc"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["zymc"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["fs"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["wc"].ToString() + "</td><td class=\"gray\" align=\"center\">" + setxnwc(ds.Tables[0].Rows[i]["xnwc"].ToString(), ds.Tables[0].Rows[i]["wc"].ToString(), ds.Tables[0].Rows[i]["pc"].ToString()) + "</td><td>&nbsp;" + setpc(ds.Tables[0].Rows[i]["pc"].ToString()) + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["bwlqrs"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["bzylqrs"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["bzyzgf"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["zgfwc"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["bzyzdf"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["zdfwc"].ToString() + "</td><td>" + ds.Tables[0].Rows[i]["pjf"].ToString() + "</td>" + GetTblName(tbl, "<td>&nbsp;" + ds.Tables[0].Rows[i]["pro"].ToString() + "</td><td>&nbsp;" + ds.Tables[0].Rows[i]["cs"].ToString() + "</td>") + "<td><a href=\"#\" οnclick=\"Confirm1(真的要修改吗?,wj_add.aspx,id=" + ds.Tables[0].Rows[i]["id"].ToString() + ");return false;\">修改</a></td><td><a href=\"#\" οnclick=\"Confirm(真的要删除吗?,id=" + ds.Tables[0].Rows[i]["id"].ToString() + "&act=del);return false;\">删除</a></td></tr>";
            }
            ds.Clear();
            ds.Dispose();
          Page_list.Text = pagestr; //绑定分页数据

this.PageStr.Text = GetPage.PageStr("tbl=" + tbl + "&title=" + title + "&subtitle=" + subtitle + "&pc=" + pc, totalpage, PageSize, pageIndex, true, 2);//绑定分页导航
            #endregion

转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/07/07/1518769.html

Asp.net 高性能数据分页函数,调用示例相关推荐

  1. php篮球比赛,篮球数据API接口 - 【篮球比赛动画直播变化数据】API调用示例代码...

    篮球比赛动画直播变化数据API调用示例,详细请查看在线文档,需注册下 package com.huaying.demo.basketball; import javax.xml.bind.JAXBCo ...

  2. 如何开发python sdk调用数据_Python SDK调用示例

    开发者可以通过Python SDK,调用物联网数据分析中生成的API. 步骤一:安装SDK 登录Python官方网站下载2.6.5及以上版本的Python,并按说明完成安装. (可选)安装Python ...

  3. php篮球比赛,篮球数据API接口-【篮球比赛动画直播变化数据】API调用示例代码...

    篮球比赛动画直播变化数据API调用示例,详细请查看在线文档,需注册下 package com.huaying.demo.basketball; import javax.xml.bind.JAXBCo ...

  4. python动画定义篮球大小_篮球数据API接口 - 【篮球比赛动画直播变化数据】API调用示例代码...

    篮球比赛动画直播变化数据API调用示例,详细请查看在线文档,需注册下 package com.huaying.demo.basketball; import javax.xml.bind.JAXBCo ...

  5. 篮球数据API接口 - 【篮球赛事分析数据】API调用示例代码

    分享使用接口调用的示例代码,篮球数据[篮球赛事分析数据]接口 package com.huaying.demo.basketball;import java.nio.charset.StandardC ...

  6. 足球数据API接口 - 【足球赛事分析数据】API调用示例代码

    分享使用接口调用的示例代码,足球数据[足球赛事分析数据]接口 package com.huaying.demo.football;import java.nio.charset.StandardCha ...

  7. 足球数据API接口 - 【比赛动画直播数据】API调用示例代码

    分享接口调用的示例代码,篮球数据[比赛动画直播数据]接口 package com.huaying.demo.football;import javax.xml.bind.JAXBContext; im ...

  8. oracle mysql limit用法_mysql以及oracle数据分页的sql示例(limit和Rownum的用法) | Soo Smart!...

    对数据查询结果集截断获取,来实现数据库层的分页.在mysql以及Oracle下的实现如下: MySQL下使用limit和offset,Oracle使用Rownum. MySQL下limit和offse ...

  9. 足球数据API接口 - 【比赛动画直播变化数据】API调用示例代码

    分享示例代码,足球数据[比赛动画直播变化数据]接口 package com.huaying.demo.football;import javax.xml.bind.JAXBContext; impor ...

  10. CSGO电竞数据API接口 - 【赛事数据】API调用示例代码

    分享使用 野子科技 https://xxe.io/ 接口调用的示例代码,CSGO的[战队列表]接口. import com.alibaba.fastjson.JSON; import com.alib ...

最新文章

  1. Linux的19 个装B的命令,记得搂一遍!!!
  2. android md风格Switch,带有图标动画和颜色转换的Switch – material...
  3. Axure原型尺寸笔记
  4. java jfreechart下载_jfreechart下载-JFreeChart下载安装[java图表插件]-PC下载网
  5. Linux系统下Hadoop运行环境搭建
  6. 介绍 Java 平台的 Jazzy:一种新的拼写检查器 API
  7. 里面有面和点_鲜虾韭菜水晶饺,皮薄馅大,晶莹剔透,一不小心就变成了面点高手...
  8. 怎么算掌握了mysql_MySQL你必须掌握了解的锁知识!
  9. web 请求 编码 引发的问题
  10. gradle java ide_用最简单的gradle代码,解决你java项目中的jar依赖之苦
  11. sodp软件如何导入多个工作面信息_如何批量导入数据到手机通讯录
  12. 腾讯微博开放平台发布者分享会(陈思齐)
  13. RSA算法原理及数字签名技术
  14. 01 社会网络分析基础理论!
  15. 如何成为一名优秀的程序员
  16. 三次握手,为什么不是两次,也不是四次
  17. 微信好友只有昵称没有微信号_为什么有些好友名片有显示微信号,有些却没有,怎么回事?急...
  18. python123新版个人所得税计算_Python 小案例 计算个人所得税
  19. uni-app 使用API中的uni.chooseImage 上传照片以及uni.previewImage图片预览(身份证照片为例)
  20. 百变鹏仔缤纷彩色文字广告位代码美化版

热门文章

  1. 顶点计划 抄作业问题讨论
  2. Navicat使用教程:获取MySQL中的行数(第1部分)
  3. WPF简单实用方法(持续更新)
  4. BZOJ 1230: [Usaco2008 Nov]lites 开关灯( 线段树 )
  5. 办暂住证,郁闷,极度不爽.
  6. 几个阿里,美团,腾讯大佬的公众号!超级变态!
  7. 人工智能的Hello World!
  8. mongodb 笔记
  9. SPSS 相关性的选择
  10. 【codeforces 534B】Covered Path