日期:2014-05-19  浏览次数:20458 次

存储过程分页问题,大家进来看看啊!
以下是分页存储过程,如何把这个存储过程应用于DataGrid、DataList呢?请给个实例,谢谢!

CREATE   PROCEDURE   [dbo].[sp_UserManageList]
@tblName   varchar(255)   ,   --   表名  
@strGetFields   varchar(1000)   =   '* ',   --   需要返回的列  
@fldName   varchar(255)   =   ' '   ,   --   排序的字段名  
@PageSize   int   =   2,   --   页尺寸  
@PageIndex   int   =   1,   --   页码  
@doCount   bit   =   0,   --   返回记录总数,   非   0   值则返回  
@OrderType   bit   =   0,   --   设置排序类型,   非   0   值则降序  
@strWhere   varchar(1500)   =   ' '   --   查询条件   (注意:   不要加   where)  
AS  

declare   @strSQL   varchar(5000)   --   主语句  
declare   @strTmp   varchar(110)   --   临时变量  
declare   @strOrder   varchar(400)   --   排序类型  
if   @doCount   !=   0  
begin  
if   @strWhere   != ' '  
set   @strSQL   =   "select   count(*)   as   Total   from   [ "   +   @tblName   +   "]   where   "+@strWhere  
else  
set   @strSQL   =   "select   count(*)   as   Total   from   [ "   +   @tblName   +   "] "  
end  
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况  

else  
begin  
if   @OrderType   !=   0  
begin  
set   @strTmp   =   " <(select   min "  
set   @strOrder   =   "   order   by   [ "   +   @fldName   + "]   desc "  
--如果@OrderType不是0,就执行降序,这句很重要!  
end  

else  
begin  
set   @strTmp   =   "> (select   max "  
set   @strOrder   =   "   order   by   [ "   +   @fldName   + "]   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   [ "   +   @fldName   +   "] "   +   @strTmp   +   "([ "+   @fldN