当前位置:Gxlcms > 数据库问题 > sqlserver存储过程

sqlserver存储过程

时间:2021-07-01 10:21:17 帮助过:7人阅读

多条件分页:

 

-----分页存储过程
--判断存储过程是否存在
if OBJECT_ID(‘proc_Page‘) is not null
--删除存储过程
drop proc proc_Page
go
--创建存储过程
create proc proc_Page
--参数
@ClaId int=0, --班级Id
@Sage varchar(20)=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 * from v_student‘;
--条件
set @sql+=@sqlWhere;
set @sql+=‘ ) as temp
where rid>‘+STR(@rid);
exec (@sql);

 

sqlserver存储过程

标签:har   sql   条件   存在   create   判断   declare   proc   alc   

人气教程排行