alter PROCEDURE pagination

@tblName varchar(255), -- 表名

@strGetFields varchar(1000) = '*', -- 需要返回的列

@fldName varchar(255)='', -- 排序的字段名

@PageSize int , -- 页尺寸

@PageIndex int, -- 页码

@doCount bit , -- 返回记录总数, 非 0 值则返回

@OrderType bit , -- 设置排序类型, 非 0 值则降序

@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)

--@result varchar(1000) output

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

--如果@OrderType不是0,就执行降序,这句很重要!

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

--如果是第一页就执行以下代码,这样会加快执行速度

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

/*

*/

--set @result=@strSQL

end

exec(@strSQL)

GO

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DataTable dt=GetCustomersData("Customers","CustomerID,CompanyName","CustomerID",10,2,0,1,"").Tables[0];

GridView1.DataSource = dt;

GridView1.DataBind();

}

}

private DataSet GetCustomersData(string tblName, string strGetFields, string fldName, int PageSize, int PageIndex, int doCount, int OrderType, string strWhere)

{

string conns = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString();

string connString = ConfigurationSettings.AppSettings["NorthwindConnectionString"];

SqlConnection conn = new SqlConnection(connString);

SqlCommand comm = new SqlCommand("pagination",conn);

comm.Parameters.Add(new SqlParameter("@tblName",SqlDbType.VarChar));//表名

comm.Parameters[0].Value = tblName;

comm.Parameters.Add(new SqlParameter("@strGetFields", SqlDbType.VarChar));//返回的列

comm.Parameters[1].Value = strGetFields;

comm.Parameters.Add(new SqlParameter("@fldName", SqlDbType.VarChar));//排序的字段名

comm.Parameters[2].Value = fldName;

comm.Parameters.Add(new SqlParameter("@PageSize", SqlDbType.Int));//页尺寸

comm.Parameters[3].Value = PageSize;

comm.Parameters.Add(new SqlParameter("@PageIndex", SqlDbType.Int));//页码

comm.Parameters[4].Value = PageIndex;

comm.Parameters.Add(new SqlParameter("@doCount", SqlDbType.Int));//是否返回记录总数,0为不返回,1为返回

comm.Parameters[5].Value = doCount;

comm.Parameters.Add(new SqlParameter("@OrderType", SqlDbType.Int));//设置排序类型,0为升序,非0为降序

comm.Parameters[6].Value = OrderType;

comm.Parameters.Add(new SqlParameter("@strWhere", SqlDbType.VarChar));//where语句

comm.Parameters[7].Value = strWhere;

comm.CommandType = CommandType.StoredProcedure;

SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);

DataSet ds = new DataSet();

dataAdapter.Fill(ds);

return ds;

}

declare @answer varchar(1000)

exec pagination 'Customers','CustomerID,CompanyName','CustomerID',10,2,0,1,'CustomerID>''A''',@answer output

select @answer

----------------------------------------------------------------------

select top 10 CustomerID,CompanyName

from [Customers]

where [CustomerID]>

(

select max([CustomerID])

from (

select top 10 [CustomerID]

from [Customers]

order by [CustomerID] asc

) as tblTmp

)

order by [CustomerID] asc

select top 10 CustomerID,CompanyName

from [Customers]

where [CustomerID]<

(

select min([CustomerID])

from (

select top 10 [CustomerID]

from [Customers]

order by [CustomerID] desc

) as tblTmp

)order by [CustomerID] desc

select top 10 CustomerID,CompanyName

from [Customers]

where [CustomerID]<

(

select min([CustomerID])

from

(

select top 10 [CustomerID]

from [Customers] where CustomerID>'A' order by [CustomerID] desc) as tblTmp) and CustomerID>'A' order by [Cu

转载于:https://www.cnblogs.com/yidianfeng/archive/2008/12/27/1363668.html

sqlserver2000分页相关推荐

  1. sqlserver2000分页存储过程(原创)

    刚刚用了博客园,感觉这里的气氛真的很好,发布这几天写的一个分页存储过程,请dudu多多关照,请各位大牛指正. 功能:海量优化,支持任何字段排序,可支持随机取数据,导出所有数据功能,用了id(整型)比较 ...

  2. hibernate dialect 方言 sqlserver2000 的方言

    2019独角兽企业重金招聘Python工程师标准>>> hibernate没有sqlserver2000的方言,在分页的时候会报错,你可以用 net.sf.hibernate.dia ...

  3. Sqlserver存储过程和C#分页类简化你的代码!

    在最近的项目中,由于要用到自定义分页的功能,本人就在网上找了个存储过程.结合C#写了个分页类.由于本人第一次写文章.写得不好,大家不要扔鸡蛋.. 下面是存储过程(sqlserver2000下通过) - ...

  4. 手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资

    前言: 我们在写项目的时候,往往有一些项目的信息展示.而展示的数据量往往是很大的,这时候,加入一个分页的功能往往是最理想的选择. 先简单描述一下功能: 根据你的数据量和指定的页面展示数据条数,进行查询 ...

  5. django自带的分页功能

    django自带的分页功能 django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴. django视图部分的代码.(注释才是重点) from dja ...

  6. Mysql分页order by数据错乱重复

    公司用的是Mybatis,发现分页和排序时直接传递参数占位符用的都是 ,由于,由于,由于有SQL注入风险,要改为#,但是封装page类又麻烦,所以直接使用了 pageHelper 插件了,方便快捷,但 ...

  7. Django 分页和使用Ajax5.3

    分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...

  8. [JAVA EE] JPA 查询用法:自定义查询,分页查询

    项目已上传:https://codechina.csdn.net/qq_36286039/javaee 自定义查询 问题:内置的crud功能不满足需求时如何添加自定义查询? 几种自定义查询方法 方法命 ...

  9. datatable java实现分页_jQuery Datatable - 使用Php的服务器端处理数据分页

    我有jquery datatable分页的问题(服务器端处理) . 例如,我在数据库中有 24 条记录 . 计数正确显示,总分页也正确显示 . 当我点击 Next or 2nd page 时,它会根据 ...

  10. Oracle分页存储过程

    CREATE OR REPLACE Procedure Soa_Getpager(p_Pagesize Int, --每页记录数p_Pageno Int, --当前页码,从 1 开始p_Sqlcols ...

最新文章

  1. Dropout也能自动化了,谷歌大神Quoc Le等人利用强化学习自动找寻模型专用Dropout...
  2. WebPart(SharePoint)中如何使用自定义的Javascript和css样式
  3. 如何配置SAP Analytics Cloud到SAP Cloud for Customer的连接
  4. 当推荐系统遇到物联网...
  5. CactiEZ V10.1安装及配置
  6. CAj格式文件打开方法
  7. 毕业论文之——实习总结10篇(包含心得体会)
  8. 阿里云域名和ip绑定具体内容步骤
  9. springboot系列(二十七):如何实现word携带图片导出?这你得会|超级详细,建议收藏
  10. 大学物理实验长度的测量实验报告_大学物理实验长度测量法实验报告完整版
  11. 一次不常见的等待事件:RECO进程enq: DR - contention
  12. 面向过程与面向对象有什么区别
  13. 红牛农场java代码_Java面向对象程序设计实验指导模板代码(171页)-原创力文档...
  14. 14位IT高管及技术大牛谈Java的生态系统
  15. 安卓熊猫视频压缩器v1.1.51高级版
  16. 掌控板教程 | 搞定 Siri 语音控制,只要半小时!
  17. 速轩三维 - 白光/蓝光/拍照式三维扫描仪
  18. 政行为导致合同不能履行,违约方是否要承担民事违约
  19. a as as big rat_励志英语名言-20页
  20. 时光机APP隐私协议

热门文章

  1. 文件的HANDLE转化为FILE*!!!
  2. com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭
  3. Net系列框架-Dapper+AutoFac 基于接口
  4. 代码审查(咳咳......又降温了啊....!!!!)
  5. ABAP中的枚举对象
  6. leetcode_sql_1,176,177
  7. [Unity3D]Unity3D圣骑士模仿游戏开发传仙灵达到当局岛
  8. JFreeChart学习示例
  9. 102 模拟ssh远程执行命令
  10. nginx虚拟机无法访问解决