/*
根据单位ID获取排班信息
For:WXX
TIme:2017-11-22
*/
ALTER proc [dbo].[proc_ScheduleInfo]
@companyID nvarchar(20)='', --单位ID
@classLineId nvarchar(20)='', --线路ID
@vehicleId nvarchar(20)='', --车辆ID
@goTime nvarchar(30) ='', --发车日期
@pageIndex int=1, --当前页
@pageSize int=1000, --页容量
@numsCount int=0 output, --总条数
@pageCount int=0 output --总页数 As --declare @dateNow nvarchar(20) --当前日期
--DECLARE @sql varchar(max) --查询sql
--DECLARE @sqlCount varchar(max) --查询countsql
--DECLARE @top int
declare @countSql nvarchar(max) --总条数SQL
declare @infoSql nvarchar(max) --数据SQL
declare @pageSql nvarchar(max) --分页SQL
declare @whereSql nvarchar(max) --条件SQL
declare @execSql nvarchar(max) --总条数执行SQL
declare @couns nvarchar(max) set @whereSql = ' 1=1 ' if(@companyID is not null and @companyID <>'')
set @whereSql = @whereSql+' and companyID= '''+@companyID+''' '
if(@classLineId is not null and @classLineId <>'')
set @whereSql = @whereSql+' and classLineId = '+@classLineId+' '
if(@vehicleId is not null and @vehicleId <>'')
set @whereSql = @whereSql+' and vehicleId = '+@vehicleId+' '
if(@goTime is not null and @goTime <>'')
set @whereSql = @whereSql+' and date like '''+@goTime+'%'' ' --查询总条数sql
set @countSql = 'select @count=COUNT(1) from ( select s.*, d.remark as dr from
(
select * from Schedule where '+@whereSql+'
) as s
join Company as d on s.companyID = d.cNo
) as b ' --查询数据sql
set @infoSql = 'SELECT Top ('+CONVERT(nvarchar(10),@pageSize)+') * from (
select row_number()over(order by date)rownumber,* from
(
select s.*, d.remark as dr from
(
select * from Schedule where '+@whereSql+'
) as s
join Company as d on s.companyID = d.cNo
) as b ' set @pageSql = ' ) as T
Where rownumber >= ('+CONVERT(nvarchar(10),@pageIndex)+'-1) * ('+CONVERT(nvarchar(10),@pageSize)+')+1 Order By rownumber' --总页数 set @execSql = @countSql
--select(@execSql) for xml path('')
exec sp_executesql @execSql, N'@count int out', @couns out
set @numsCount = @couns --分页查询
--select(@infoSql+@whereSql+@pageSql) for xml path('')
exec(@infoSql+@pageSql) --分页算法
SET @pageCount = @numsCount % @pageSize;
if (@pageCount =0)
begin
set @pageCount = @numsCount / @pageSize ;
end
else if(@numsCount<@pageSize)
begin
set @pageCount=1;
end
else
begin
set @pageCount = @numsCount / @pageSize + 1;
end
if (@pageIndex>@PageCount)
begin
set @pageIndex = @pageCount;
end

好记性不如云存储。

记录一个古老的Sql分页过程的更多相关文章

  1. [oracle]pl/sql --分页过程demo

    这句sql能够用来查询一张表中的特定位置的记录 --查询的方法获取分页的语句 select *from (select t1.*,rownum rn from (select *from books) ...

  2. 记录一个前端bug的解决过程

    人在江湖飘,哪能不挨刀. 我挨了重重一bug.严格来讲这可能是我职业生涯以来的首个悲惨经历,因为凭我的知识储备和经验,基本上任何可重现的bug都是可解的.然而这个bug却困扰了我三个月之久,它具有以下 ...

  3. Oracle基础(五)pl/sql进阶(分页过程)

    编写分页过程         通过pl/sql实现分页过程,再该过程中由简单到难一步步深入,目的在于通过该案例熟悉pl/sql的各种存储过程,包,游标.怎样在java中调用等内容的学习. 1.无返回值 ...

  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程

    有时我们需要记录整个系统运行的SQL以作分析,特别是在上线前这对我们做内部测试也非常有帮助,当然记录SQL的方法有很多,也可以使用三方的组件.3.2版本我们在框架底层新增了记录框架运行的所有SQl过程 ...

  5. 一个PHP的SQL注入完整过程

    本篇文章介绍的内容是一个PHP的SQL注入完整过程,现在分享给大家,有需要的朋友可以参考一下 希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里 ...

  6. oracle顺序控制语句goto、null和分页过程中输入输出存储、java程序的调用过程

    顺序控制语句1 goto建议不要使用 declare i number:=; begin loop dbms_output.put_line(i); then goto end_loop; end i ...

  7. oracle15 pl/sql 分页

    PL/SQL分页 编写分页过程 无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程: ...

  8. [转]关于SQL分页存储过程的分析

    [转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...

  9. 二十六、oracle pl/sql 分页

    一.无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程. 案例:现有一张表book, ...

随机推荐

  1. linux下测试磁盘的读写IO速度

    有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策. 下面是两种测试方法:(1)使用hd ...

  2. Caused by: The Result type [json] which is defined in the Result annotation on the class

    1.错误描述 严重: Dispatcher initialization failed Unable to load configuration. - [unknown location] at co ...

  3. Linux显示工作路径

    Linux显示工作路径 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ pwd /home/youhaidong

  4. 使用dos的tree命令输出文件夹树

    用dos的tree命令就可以实现文件夹树状图的输出,不过目前仅能输出为.txt文件 方法如下: 开始->运行 输入cmd打开命令控制台 切换到你要显示的列表文件夹 比如 输入 d: 切换到d盘 ...

  5. trs.getElementsByTagName is not a function 出现原因及解决办法

    好久没有操作dom元素了,在定义dom元素时, let tBo = document.getElementById('tBody') let trs = tBo.getElementsByTagNam ...

  6. Request对象实现请求转发区别

    servlet请求转发与重定向的区别: request.setAttribute("test","hello"); request.getRequestDisp ...

  7. 使用 github 做代码管理,知道这些就够了

    只要掌握了下面的常用命令,基本上用使用 github 就没有问题.github 有两种认证方式,一种是通过 ssh 私钥的方式,一种通过 https 的账号名和密码.ssh 方式需要创建本地秘钥并且添 ...

  8. SqlBulkCopy 批量复制数据到数据库

    1.简介 1.MSDN 核心方法:SqlBulkCopy.WriteToServer 将所有行从数据源复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表 ...

  9. Css Secret 案例全套

    Css Secret 案例全套 github地址 案例地址 该书揭示了 47 个鲜为人知的 CSS 技巧,主要内容包括背景与边框.形状. 视觉效果.字体排印.用户体验.结构与布局.过渡与动画等.去年买 ...

  10. jquery 实现一个简单的成功提示框,失败提示框

    主要的jquery代码:var TS={ successAlert:function(str){ //调用成功的方法 var html='<div class="alert alert ...