/*
根据单位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显示内存统计最大和最小的详情

    Linux显示内存统计最大和最小的详情 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -l total used free shared buffe ...

  2. Flex中怎么给表格中的滚动条定位

    1.问题背景 如果表格中的字段过多,会出现滚动条,在将滚动条滚到一定的位置时,重新刷新表格,滚动条会回到原处,原来查看的字段还得继续滚动,才能查看到. 2.实现实例 <?xml version= ...

  3. Python中re模块的使用

    #table-1 thead,#table-1 tr { border-top-width: 1px; border-top-style: solid; border-top-color: rgb(2 ...

  4. Ball HDU - 4811

    Jenny likes balls. He has some balls and he wants to arrange them in a row on the table. Each of tho ...

  5. jsTree树形菜单分类

    这里我演示的jsTree是基于ABP框架 ,展示部分代码,话不多说首先看效果如: 1:引入JS <link href="/jstree/themes/default/style.css ...

  6. 如何通过java反射的方式对java私有方法进行单元测试

    待测试的私有方法: import org.testng.Assert;import org.testng.annotations.BeforeClass;import org.testng.annot ...

  7. [HDU4812]D Tree

    vjudge 题意:给一棵树,每个点上有一个权值,求一条路径使得路径上权值的乘积膜\(10^6+3\)的结果为\(K\),输出路径的两个端点\(x,y\).如有多解,设\(x<y\),输出\(x ...

  8. [BZOJ1012] [JSOI2008] 最大数maxnumber (ST表)

    Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...

  9. Spring Boot初探之数据库访问

    一.背景 Spring boot是集服务发布.数据库管理.日志管理等于一身的服务开发框架:是微服务开发的全能小帮手.这章讲述一下如何使用spring boot访问MySQL数据库. 二.搭建基础环境 ...

  10. ES6的模块化规范和CommonJS的模块化规范的差异

    ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案.其模块功能主要由两个命令构成:export 和 import.export命令用于规定模块的对 ...