日期:2014-05-18  浏览次数:20432 次

哪位高手能帮我改一存储过程,测试通过了50分全拿
这是一个通用的分页存储过程,其道理就是通过max和min函数来取数据,现只支持一个字段的排序,谁能帮我改成2个字段或多字段的排序

--   获取指定页的数据
CREATE   PROCEDURE   CS_SP_TS_Web_Pager
@tblName       varchar(255),               --   表名
@strGetFields   varchar(1000)   =   '* ',     --   需要返回的列  
@fldName   varchar(255)= ' ',             --   排序的字段名
@PageSize       int   =   10,                     --   页尺寸
@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   + "],C_CALLTIME   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   [ "   + &nb