Sql service 分页存储过程
create database Exam_Week3
GO
USE Exam_Week3
GO
create table Classs
(
ClaID int identity(1001,1),
ClassName varchar(100),
Counts int
)
go
insert into Classs values
('1706B',5),
('1706A',5),
('1705B',5),
('1705A',5),
('1704B',5)
go
create table Student
(
SID int identity(2001,1),
ClaID int, --班级id
Sname varchar(100), --学生姓名
Sage datetime,
Ssex bit
)
go
insert into Student values
(1001,'张三1',2013-10-02,1),
(1001,'张三2',2013-10-02,1),
(1001,'张三3',2013-10-02,1),
(1001,'张三4',2013-10-02,1),
(1001,'张三5',2013-10-02,1),
(1002,'李四1',2013-10-02,1),
(1002,'李四2',2013-10-02,1),
(1002,'李四3',2013-10-02,1),
(1002,'李四4',2013-10-02,1),
(1002,'李四5',2013-10-02,1),
(1003,'李艳1',2013-10-02,0),
(1003,'李艳2',2013-10-02,0),
(1003,'李艳3',2013-10-02,0),
(1003,'李艳4',2013-10-02,0),
(1003,'李艳5',2013-10-02,0),
(1004,'王五1',2013-10-02,1),
(1004,'王五2',2013-10-02,1),
(1004,'王五3',2013-10-02,1),
(1004,'王五4',2013-10-02,1),
(1004,'王五5',2013-10-02,1),
(1005,'李流1',2013-10-02,1),
(1005,'李流2',2013-10-02,1),
(1005,'李流3',2013-10-02,1),
(1005,'李流4',2013-10-02,1),
(1005,'李流5',2013-10-02,1),
(1005,'李流6',2013-10-02,1)
go
create table Course
(
CID int identity(3001,1),
Cname varchar(100),
TID int --教室编号
)
go
insert into Course values
('C#',4001),
('php',4002),
('Ajax',4003),
('Webseave',4004),
('网站',4005)
go
create table Teacher
(
TID int identity(4001,1),
Tname varchar(100),
)
go
insert into Teacher values
('王红'),
('陆兵'),
('霍建华'),
('李冰冰'),
('宋小宝')
go
create table SC
(
scid int identity(5001,1),
SID int,
CID int, --课程编号
score int
)
go
insert into SC values
(2001,3001,93),
(2001,3002,85),
(2001,3003,57),
(2001,3004,98),
(2001,3005,99),
(2002,3001,80),
(2002,3002,100),
(2002,3003,55),
(2002,3004,77),
(2002,3005,43),
(2003,3001,85),
(2003,3002,86),
(2003,3003,88),
(2003,3004,90),
(2003,3005,91),
(2004,3001,79),
(2004,3002,80),
(2004,3003,64),
(2004,3004,63),
(2004,3005,62),
(2005,3001,74),
(2005,3002,73),
(2005,3003,96),
(2005,3004,89),
(2005,3005,92),
(2005,3001,92) select * from
(
select Classs.ClaID,Classs.ClassName,Classs.Counts,Student.Sage,Student.SID,Student.Sname,Student.Ssex,
SC.scid,SC.score,Course.CID,Course.Cname,Teacher.TID,Teacher.Tname,ROW_NUMBER() over(order by score) as rid
from Classs
join Student on Classs.ClaID=Student.ClaID
join SC on sc.SID=Student.SID
join Course on Course.CID=sc.CID
join Teacher on Teacher.TID=Course.TID ) as temp
where rid> -----分页存储过程
--判断存储过程是否存在
if OBJECT_ID('proc_Page') is not null
--删除存储过程
drop proc proc_Page
go
--创建存储过程
create proc proc_Page
--参数
@ClaId int=0, --班级Id
@Sage datetime=null, --出生日期
@Sname nvarchar(10)=null, --学生名称
@SmallScore int=0, --小成绩
@BigScore int=0, --大成绩
@CID int=0, --课程Id
@Tname nvarchar(10)=null, --讲师名字
@PageIndex int, --当前页
@PageSize int, --每页条数
@TotalCount int out, --总条数
@order int=1 --1升序 0降序
as
--变量
declare
@sql varchar(max), --总sql
@sqlWhere varchar(max), --条件
@rid int, --分页条件
@countSql nvarchar(max) --个数sql set @sql='';
set @sqlWhere=' where 1=1';
set @rid=(@PageIndex-1)*@PageSize;
set @countSql='select @total=count(1)
from Classs
join Student on Classs.ClaID=Student.ClaID
join SC on sc.SID=Student.SID
join Course on Course.CID=sc.CID
join Teacher on Teacher.TID=Course.TID'; --条件班级Id
if @ClaId!=0
begin
set @sqlWhere+=' and Classs.ClaId='+str(@ClaId);
end
----出生日期
if @Sage is not null
begin
set @sqlWhere+=' and Sage='+@Sage;
end
--学生名称
if @Sname is not null
begin
set @sqlWhere+=' and Sname like ''%'+@Sname+'%''';
end
--小成绩
if @SmallScore !=0
begin
set @sqlWhere+=' and Score>='+STR(@SmallScore);
end --大成绩
if @BigScore !=0
begin
set @sqlWhere+=' and Score<='+STR(@BigScore);
end --课程Id
if @CID!=0
begin
set @sqlWhere+=' and CID='+str(@CID);
end
--讲师名字
if @Tname is not null
begin
set @sqlWhere+=' and Tname like ''%'+@Tname+'%''';
end --总条数
set @countSql+=@sqlWhere; --执行计算条数的sql语句并且给输出参数赋值
exec sp_executesql @countSql, N'@total int out',@total=@TotalCount out --排序
declare @o varchar(4);
if @order=1
begin
set @o='asc';
end
if @order=0
begin
set @o='desc';
end
--总sql
set @sql='select top '+str(@PageSize)+' * from
(
select Classs.ClaID,Classs.ClassName,Classs.Counts,Student.Sage,Student.SID,Student.Sname,Student.Ssex,
SC.scid,SC.score,Course.CID,Course.Cname,Teacher.TID,Teacher.Tname,ROW_NUMBER() over(order by score '+@o+') as rid
from Classs
join Student on Classs.ClaID=Student.ClaID
join SC on sc.SID=Student.SID
join Course on Course.CID=sc.CID
join Teacher on Teacher.TID=Course.TID'; --条件
set @sql+=@sqlWhere; set @sql+=' ) as temp
where rid>'+STR(@rid); exec (@sql);
Sql service 分页存储过程的更多相关文章
- sql server 分页存储过程
----------------------分页存储过程------------------------------------------------------------------------ ...
- C#调用SQL Server分页存储过程
以SQL Server2012提供的offset ..rows fetch next ..rows only为例 e.g. 表名:Tab1 ------------------------------ ...
- [转]Sql Server 分页存储过程
本文转自: 版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且 ...
- SQL 2005 分页存储过程
-- ============================================= -- Description: <高效分页存储过程,适用于Sql2005以上> -- ...
- SQL实现分页存储过程
SQL分页存储过程的编写: --获得分页的DATASET资源 ALTER PROC sp_GetSource( @PageSize INT, --每页显示条数 @PageIndex INT, --页码 ...
- 分页系列之一:SQL Server 分页存储过程
以下为最基本的代码结构,SQL Server 2012 开始支持 CREATE PROCEDURE procXXX @Page int, --当前页码,从1开始 @PageSize int --每页记 ...
- SQL基础分页存储过程(案例一)
--分页 存储过程 案例 -- 所执行的存储过程 create proc pageForUsers @currPage int, --当前页数 @pageSize int, --每页多少条记录 @co ...
- 改良版的SQL Service 通用存储过程分页
上次写了通用存储过程.感觉还是有很大的BUG.就是条件不能参数画化.这个BUG可以说是致命的.但是我一直想在用什么方法能解决这个东西.其实我只是想写少量的代码来做更多的事情.我想能不能传集合给存储过程 ...
- sql server分页存储过程
因项目需要,一次性查询出来的数据过大,内存hold不住,所以特意写成分页查询,减小占用内存. 存储过程如下: USE [XXX] GO SET ANSI_NULLS ON GO SET QUOTED_ ...
随机推荐
- selenium+java:获取列表中的值
selenium+java:获取列表中的值 (2011-08-23 17:14:48) 标签: 杂谈 分类: selenium 初步研究利用java+testNg框架下写selenium测试用例,今天 ...
- 【ABAP系列】【第六篇】SAP ABAP7.50 之隐式增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列][第六篇]SAP ABAP7.5 ...
- Unity中的动画系统和Timeline(1) 普通动画创建
学习使用版本:Unity2017.1.1 目标:给一个Cube创建动画 一:第一种创建方法 1 Windows —— Animation,打开Aniamtion动画界面,此时显示 因为此时没有任何动画 ...
- SpringCloud(一):SpringCould 框架预览
前言 SpringCloud是基于SpringBoot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管 ...
- 对scrapy进行单元测试 -- 使用betamax
使用betamax进行单元测试 爬虫代码 测试代码 对于scrapy的单元测试,官方文档并没有提到,只是说有一个Contract功能.但是相信我,这个东西真的不好用,甚至scrapy的作者在一个iss ...
- HP UNIX弱口令
这种弱口令直接丢进kali linu里用john --wordlist=zd.txt 加上文件
- PHP中的data()函数
date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考. 格式化日期date() 函数的第一个参数规定了如何格式化日期/时间.它使用字母 ...
- PLSQL中查到的数据和程序中查询到的不一样
1.首先看下你的修改或者新增的SQL是否提交.
- 依赖作用域之<scope>test</scope>
经常在代码中看到依赖的作用域为<scope>test</scope>,它的作用是,只能在test目录(通过右键->Make Directory as->Test S ...
- # IDEA相关知识
目录 IDEA相关知识 安装目录下: 配置目录下: 工程目录下: 名词解释 IDEA相关知识 安装目录下: bin:启动文件,配置信息,IDEA的一些属性信息 jre64:IDEA自带的运行环境 li ...