前几天刚写的,对多个主键 多表 多个字段组合查询 多字段排序的情况下实现真分页的存储过程:
多主键情况下的真分页存储过程CREATE procedure TEACHERS_SEARCH
多主键情况下的真分页存储过程
@schoolid as int=0,
多主键情况下的真分页存储过程
@teacher_name as nvarchar(50)='',
多主键情况下的真分页存储过程
@push_status as tinyint=0,
多主键情况下的真分页存储过程
@count as tinyint=0,  --真分页统计
多主键情况下的真分页存储过程
@pageSize as int=10--当前页需要显示的记录数
多主键情况下的真分页存储过程
@topSize as int=10  --包括该页前面的记录总数
多主键情况下的真分页存储过程
as
多主键情况下的真分页存储过程
多主键情况下的真分页存储过程
--@status 0:全部;1:在课件区;2:在blog区;3:既在课件区又在blog区;
多主键情况下的真分页存储过程
declare @str nvarchar(2000)
多主键情况下的真分页存储过程
declare @str_search nvarchar(1000)
多主键情况下的真分页存储过程
多主键情况下的真分页存储过程
set @str_search='1=1'
多主键情况下的真分页存储过程
if(@schoolid<>0)
多主键情况下的真分页存储过程 
set @str_search=@str_search+' and teacher.schoolid='+str(@schoolid)
多主键情况下的真分页存储过程
if(@teacher_name<>'')
多主键情况下的真分页存储过程 
set @str_search=@str_search+' and teacher.name like '''+@teacher_name +'%'''
多主键情况下的真分页存储过程
if(@push_status=1)
多主键情况下的真分页存储过程 
set @str_search=@str_search+' and  TeacherRecommand.status in (1,3)'
多主键情况下的真分页存储过程
if(@push_status=2)
多主键情况下的真分页存储过程 
set @str_search=@str_search+' and  TeacherRecommand.status in (2,3)'
多主键情况下的真分页存储过程
if(@push_status=3)
多主键情况下的真分页存储过程 
set @str_search=@str_search+' and  TeacherRecommand.status in (1,2)'
多主键情况下的真分页存储过程
多主键情况下的真分页存储过程
if(@count=0)
多主键情况下的真分页存储过程
set @str='
多主键情况下的真分页存储过程  select * from (SELECT  top 
'+ str(@pageSize+' *  from  ( select top '+ str(@topSize+' Teacher.schoolid,Teacher.teacherid,teacher.name as teacher_name,school.name as school_name,teacher.email,teacher.telephone, TeacherRecommand.status,School.rainbowsite as rainbowsite
多主键情况下的真分页存储过程  FROM Teacher INNER JOIN
多主键情况下的真分页存储过程      School ON Teacher.schoolid = School.schoolid 
多主键情况下的真分页存储过程    LEFT OUTER JOIN
多主键情况下的真分页存储过程      TeacherRecommand ON Teacher.schoolid = TeacherRecommand.schoolid AND 
多主键情况下的真分页存储过程      Teacher.teacherid = TeacherRecommand.teacherid
多主键情况下的真分页存储过程  WHERE 
'+@str_search +' order by teacher.schoolid desc,teacher.teacherid desc) a
多主键情况下的真分页存储过程 order by schoolid asc,teacherid asc) b
多主键情况下的真分页存储过程 order by schoolid desc,teacherid desc
'
多主键情况下的真分页存储过程
else
多主键情况下的真分页存储过程
set @str='
多主键情况下的真分页存储过程  SELECT count(*)
多主键情况下的真分页存储过程  FROM Teacher INNER JOIN
多主键情况下的真分页存储过程      School ON Teacher.schoolid = School.schoolid 
多主键情况下的真分页存储过程    LEFT OUTER JOIN
多主键情况下的真分页存储过程      TeacherRecommand ON Teacher.schoolid = TeacherRecommand.schoolid AND 
多主键情况下的真分页存储过程      Teacher.teacherid = TeacherRecommand.teacherid
多主键情况下的真分页存储过程  WHERE 
'+@str_search
多主键情况下的真分页存储过程
--print @str
多主键情况下的真分页存储过程
exec (@str)
多主键情况下的真分页存储过程
GO
多主键情况下的真分页存储过程

相关文章:

  • 2021-11-09
  • 2022-12-23
  • 2021-12-19
  • 2021-12-04
猜你喜欢
  • 2021-09-12
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
  • 2021-10-05
  • 2021-11-27
相关资源
相似解决方案