IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID('[dbo].[makeUpPagingSql]') AND type = 'FN')
DROP FUNCTION [dbo].[makeUpPagingSql]
GO
CREATE FUNCTION [dbo].[makeUpPagingSql](
@tableid varchar(128),  --前端tableid
@key varchar(128),        --主键
@fields varchar(4096),    --查询字段
@condition varchar(4096), --from 之后的内容 where xxx
@order varchar(256),      --排序
@pagerData varchar(4096), --后续页面的数据
@pageSize int,  --页面大小
@pageCount int,  --页面数据量
@type bit                 --生成类型 0:生成第一页,1:生成后续数据
)
returns varchar(8000)
as
begin 
declare @sql varchar(max) = ''
if(@type=0)
begin
--返回记录数量
set @sql+='select count(*) as dataCount from '+@condition +char(13)+char(10)
--返回所有记录的ID
set @sql+='select top '+CONVERT(varchar,@pageSize*@pageCount)+' '+@key+' as dataIds from '+@condition +case when @order!=''and @order is not null then ' order by '+@order else '' end +char(13)+char(10)
--返回第一页的数据
set @sql+='select top '+CONVERT(varchar,@pageSize)+' '''+@tableid+''' tableid ,'+@fields+ ' from ' + @condition+case when @order!=''and @order is not null then ' order by '+@order else '' end+char(13)+char(10)
end else
begin
--判断是不是这个表,如果是这个表则返回数据
set @sql+='if @tableid='''+@tableid+'''' +char(13)+char(10)+'begin'+char(13)+char(10)
set @sql+='    if @pagesize=10000'
--获取分页数据
set @sql+=+char(13)+char(10)+'    begin'+char(13)+char(10)
set @sql+='       select '+@fields + ' from '+ @condition
set @sql+=char(13)+char(10)+'       return'
set @sql+=+char(13)+char(10)+'    end'+char(13)+char(10)
--下载
set @sql+='    if @objids!=''_none_'''
set @sql+=char(13)+char(10)+'    begin'+char(13)+char(10)
set @sql+='       select '+ @fields +' from @dataIds,'+ @pagerData 
set @sql+=char(13)+char(10)+'       return'
set @sql+=char(13)+char(10)+'    end'+char(13)+char(10)
set @sql+=char(13)+char(10)+'end'+char(13)+char(10)
end
return @sql
end