if @strWhere != "" set @strSQL = "select @doCount=count(*) from " + @tblName + " where "+@strWhere else set @strSQL = "select @doCount=count(*) from " + @tblName exec sp_executesql @strSQL,N"@doCount int out",@doCount out --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况 set @strSQL="";
if @OrderType != 0 begin set @strTmp = "<(select min" set @strOrder = " order by [" + @OrderfldName +"] desc"--如果@OrderType不是0,就执行降序,这句很重要! end else begin set @strTmp = ">(select max" set @strOrder = " order by [" + @OrderfldName +"] asc" end if @PageIndex = 1 begin if @strWhere != "" set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from " + @tblName + " where " + @strWhere + " " + @strOrder else set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from "+ @tblName + " "+ @strOrder--如果是第一页就执行以上代码,这样会加快执行速度 end else begin--以下代码赋予了@strSQL以真正执行的SQL代码 set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from " + @tblName + " where [" + @OrderfldName + "]" + @strTmp + "(["+ @OrderfldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @OrderfldName + "] from " + @tblName + " " + @strOrder + ") as tblTmp)"+ @strOrder if @strWhere != "" set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from " + @tblName + " where [" + @OrderfldName + "]" + @strTmp + "([" + @OrderfldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " [" + @OrderfldName + "] from " + @tblName + " where " + @strWhere + " " + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder end exec (@strSQL)