MS SQL之多条件动态查询

来源:互联网 发布:如何优化行政审批流程 编辑:程序博客网 时间:2024/04/30 14:43

在网上看到一个SQL SERVER的多条件查询,感觉很精练,并结合实际的项目,做了一个带分页的存储过程

  1. CREATE procedure [sGetrTableHeadp_mc]
  2. --获取简历数目并创建临时表分页,带多条件参数查询
  3. @status varchar(50),
  4. @city varchar(100),
  5. --高级查询条件
  6. @st varchar(50),
  7. @et varchar(50),
  8. @idnumber varchar(50),
  9. @name varchar(50),
  10. @major varchar(200),
  11. @school varchar(200),
  12. @majortype varchar(200),
  13. @degree varchar(50),
  14. @job1 varchar(200),
  15. @job2 varchar(200),
  16. --page
  17. @PageSize int, -- 一页显示的记录数
  18. @PageIndex int ,-- 当前页码(从1开始)
  19. @PageCount int output,--总页数
  20. @rc int output --总记录数
  21. as
  22. declare @strSQL varchar(1000)
  23. --生成临时表
  24. select identity(int,1,1) as id,idnumber , name as 姓名,school as 毕业院校,major as 专业,degree as 学历,job1 as 申请职位一,job2 as 申请职位二,mob as 手机
  25.  into #tmp from  Stu_BasicInfo where id in (select bid from Resume_Status where status=@status)
  26. and InterviewAddr=@city 
  27. and (submittime between @st and @et or (@st='' and @et=''))
  28. and (idnumber=@idnumber or @idnumber='')
  29. and (name like @name or @name='')
  30. and (major like @major or @major='')
  31. and (majortype=@majortype or @majortype='')
  32. and (school like @school or @school='')
  33. and (degree=@degree or @degree='')
  34. and (job1=@job1 or @job1='')
  35. and (job2=@job2 or @job2='')
  36. --查询总记录数
  37. select @rc=count(*) from #tmp
  38. --计算页数
  39. if(@rc%@PageSize=0)
  40. begin
  41. select @PageCount=@rc/@PageSize
  42. end
  43. else if(@rc%@PageSize<>0)
  44. begin
  45. select @PageCount=@rc/@PageSize+1
  46. end
  47.  --page主查询语句
  48. if(@PageIndex=1)
  49. begin
  50. set @strSQL = 'select top ' + str(@PageSize) + '* from #tmp order by id'
  51. end
  52. else if(@PageIndex>1)
  53. begin
  54. set @strSQL = 'select top ' + str(@PageSize) + '* from #tmp where id>(select max(id) from (select top ' + str(@PageSize*(@PageIndex-1)) + ' id from #tmp order by id) as T) order by id'
  55. end
  56. exec(@strSQL)
  57. --
  58. drop table #tmp
  59. GO
原创粉丝点击