1)
ALTER PROCEDURE [dbo].[up_PageTemplatePageList] @PageSize INT, @PageIndex INT, @TempleteType INT, @TemplateName VARCHAR(50)='', @TemplateFileName VARCHAR(50)='', @ReturnCount INT OUTPUT AS BEGIN SELECT @ReturnCount=COUNT(1) FROM PageTemplate WHERE TempleteType=(CASE WHEN @TempleteType=0 THEN TempleteType ELSE @TempleteType END) AND TemplateName LIKE @TemplateName AND TemplateFileName LIKE @TemplateFileName; WITH TempLatePageList AS ( SELECT ROW_NUMBER() OVER(ORDER BY OrderNum DESC) RowIndex,* FROM PageTemplate WHERE TempleteType=(CASE WHEN @TempleteType=0 THEN TempleteType ELSE @TempleteType END) AND TemplateName LIKE @TemplateName AND TemplateFileName LIKE @TemplateFileName ) SELECT * FROM TempLatePageList WHERE RowIndex BETWEEN @PageSize*(@PageIndex-1)+1 AND @PageSize*@PageIndex END
2)
ALTER PROCEDURE [dbo].[up_PageTemplatePageListByTemplateType] @PageSize int, @PageIndex int, @TempleteType int, @TemplateName varchar(50)='', @TemplateFileName varchar(50)='', @ReturnCount int output AS BEGIN declare @where varchar(50) declare @sqlfragment nvarchar(max) declare @strCount nvarchar(1000) set @where='' SET NOCOUNT ON; BEGIN if(@TempleteType<>0) begin set @strCount='set @num=(select COUNT(TemplateId) from PageTemplate where TempleteType='+@TempleteType+' AND TemplateName LIKE '''+@TemplateName +''' AND TemplateFileName LIKE '''+@TemplateFileName+''')' end else begin set @strCount='set @num=(select COUNT(TemplateId) from PageTemplate)' end EXECUTE sp_executesql @strCount ,N'@num INT output',@ReturnCount output END begin if(@TempleteType<>0) begin set @sqlfragment=' select top ('+@pageSize+') * from PageTemplate where TempleteType='+@TempleteType+' AND TemplateName LIKE '''+@TemplateName +''' AND TemplateFileName LIKE '''+@TemplateFileName+''' and TemplateId not in (select top ('+str((@pageIndex-1)*@pageSize)+') TemplateId from PageTemplate where TempleteType='+@TempleteType+ +' AND TemplateName LIKE '''+@TemplateName +''' AND TemplateFileName LIKE '''+@TemplateFileName+''' order by OrderNum desc ) order by OrderNum desc' end else begin set @sqlfragment=' select top ('+str(@pageSize*@pageIndex)+') * from PageTemplate where TempleteType=TempleteType AND TemplateName LIKE '''+@TemplateName +''' AND TemplateFileName LIKE '''+@TemplateFileName+''' and TemplateId not in (select top ('+str((@pageIndex-1)*@pageSize)+') TemplateId from PageTemplate where TempleteType=TempleteType AND TemplateName LIKE '''+@TemplateName +''' AND TemplateFileName LIKE '''+@TemplateFileName+''' order by OrderNum desc) order by OrderNum desc' end end --print('@sqlfragment:'+@sqlfragment) exec(@sqlfragment) END