条件查询存储过程,带分页

来源:互联网 发布:大一知乎 编辑:程序博客网 时间:2024/05/21 07:15
</pre><pre name="code" class="sql" style="background-color:rgb(255,255,255)"><pre name="code" class="sql">
-- =============================================-- SQL-Name:GetAllKnowledgeBase-- Author:ZhangCaixia-- Update date: 2013-06-08-- Description:查询所有的题库信息-- 提供模糊查询:类别名称,内容-- 若有模糊查询,则需排除条件等于%的情况,否则只输入%会查询出所有内容;--20130608-- =============================================ALTER proc [dbo].[GetAllExamMgeInfo] -- ××× 自有参数@Cate Nvarchar(50),@Cot Nvarchar(200),-- ××× 固定参数 开始 (固定参数不需要在搭建页面时设置,系统自动赋值)×××--@PageSize int,---每页显示行数@CurrentPage int,---当前页@PagingOrder varchar(500)---排序的字段-- ××× 固定参数 结束 ×××--asbegin-- ××× 固定语句 开始 (固定语句不能更改)×××--declare @min intdeclare @max intdeclare @sqlcount nvarchar(1000)  declare @sql1 nvarchar(500)declare @sql2 nvarchar(100)set @min = (@CurrentPage - 1) * @PageSize + 1---每页的首行set @max = @CurrentPage * @PageSize---每页的尾行set @sql1 = ' Select * from ( SELECT ROW_NUMBER() OVER( ORDER BY ' + @PagingOrder + ' ) AS [row_number] , 'set @sql2 = ' ) as T where [row_number] BETWEEN ' + convert(varchar,@min) + ' AND ' + convert(varchar,@max)-- ××× 固定语句 结束 ×××--declare @sql nvarchar(2000)declare @sqlfield nvarchar(500)  ----选择字段语句declare @sqlfrom nvarchar(1000)  ----选择表加条件语句set @sqlfield = '  [ExID],CateID,[ExScore],Cate,[Cot],em.[Remark],[ExNum] 'set @sqlfrom = ' FROM ExamMge em left join ExamCateMge ecm on em.CateID=ecm.ExCateID where em.DeleteStatus = 0'if(@Cate <> '')set @sqlfrom=@sqlfrom+' and  Cate='+CHAR(39) + @Cate + CHAR(39)if(@Cot <> '')set @sqlfrom = @sqlfrom + ' and Cot like '+ CHAR(39)+ '%' + @Cot + '%' + CHAR(39)if(@Cot = '%')set @sqlfrom = @sqlfrom + ' and 1=2 'set @sql = @sql1 + @sqlfield + @sqlfrom + @sql2 -- ××× 固定语句 开始 (取总记录数)×××--set @sqlcount = ' select count(*) as TotalCout  ' + @sqlfrom-- ××× 固定语句 结束 ×××----print @sqlcount--print @sql-- ××× 下面两句执行顺序不能变化 ×××--Exec sp_executesql @sqlcountExec sp_executesql @sql  --Exec GetAllExamMgeInfo '', '',20,1,ExNumEnd