create proc aaa
(
@TableName nvarchar(2000),
@PageSize int = 0,
@PageIndex int = 0,
@ReturnFields nvarchar(2000),
@OrderByfield nvarchar(2000),
@Where nvarchar(2000),
@OrderType int = 0,
@TotalCount int output
)
as
begin
declare @Start int
declare @End int
declare @CountSql nvarchar(2000)
declare @Sql nvarchar(2000)
declare @OrderBy nvarchar(2000)
if @OrderType = 1
begin
set @OrderBy = 'order by '+REPLACE(@OrderByfield ,',',' asc,')+ ' asc'
end
else
begin
set @OrderBy = ' order by '+ REPLACE(@OrderByfield,',',' desc,')+' desc'
end
set @Where = ' where 1=1 ' + @Where
set @CountSql = ' select @TotalCount= count(*) from ' +@TableName +' '+ @Where
execute sp_executesql @CountSql ,N'@TotalCount int output',@TotalCount output
if @PageIndex is null or @PageIndex =''
set @PageIndex = 1;
if @PageSize is null or @PageSize =''
set @PageSize =10
set @Start = (@PageIndex-1) * @PageSize
set @End = @PageIndex * @PageSize
set @Sql = 'select row_number() over ('+@OrderBy +')as row_num from '+ @TableName +''+@Where
set @Sql ='select * from ('+@Sql+') as temp '+ @Where +'temp.row_num >='
+ CONVERT(nvarchar(200),@Start)+' temp.row_num <='+ CONVERT(nvarchar(200),@End)
execute sp_executesql @sql
select @TotalCount
end
在实际应用中,出现数据查询不到情况时,可添加语句
this.anpDMBList.CurrentPageIndex = 1;
表明,将查询结果显示在第一页