首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

asp 调用存储过程分页的有关问题

2012-02-17 
asp 调用存储过程分页的问题我有一个这个的存储过程请问怎么调用呢alterPROCEDUREgqInfoPage@tblNamevarch

asp 调用存储过程分页的问题
我有一个这个的存储过程请问怎么调用呢
alter   PROCEDURE   gqInfoPage
@tblName   varchar(255),                                   --   表名  
@strGetFields   varchar(1000)   =   '* ',           --   需要返回的列  
@fldName   varchar(255)= 'puttime ',               --   排序的字段名  
@PageSize   int   =   20,                                         --   页尺寸  
@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  
      --if   @fldName   !=   ' '
          begin
          set   @strTmp   =   ' <(select   min '  
          set   @strOrder   =   '   order   by   [ '   +   @fldName   + ']   desc '  
      --set   @strOrder   =   '   order   by   '   +   @fldName
          --如果@OrderType不是0,就执行降序,这句很重要!  
    end
else  
    begin  
    set   @strTmp   =   '> (select   max '  
    set   @strOrder   =   '   order   by   '   +   @fldName  


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   +   '([ '+   @fldName   +   '])
  from   (select   top   '   +   str((@PageIndex-1)*@PageSize)   +   '   [ '+   @fldName   +   ']  
  from   [ '   +   @tblName   +   '] '   +   @strOrder   +   ')   as   tblTmp) '+   @strOrder  
      if   @strWhere   !=   ' '  
      set   @strSQL   =   'select   top   '   +   str(@PageSize)   + '   '+@strGetFields+   '     from   [ '  
                +   @tblName   +   ']   where   [ '   +   @fldName   +   '] '   +   @strTmp   +   '([ '  
                +   @fldName   +   '])   from   (select   top   '   +   str((@PageIndex-1)*@PageSize)   +   '   [ '  
                +   @fldName   +   ']   from   [ '   +   @tblName   +   ']   where   '   +   @strWhere   +   '   '  
                +   @strOrder   +   ')   as   tblTmp)   and   '   +   @strWhere   +   '   '   +   @strOrder  
    end  

end      


exec   (@strSQL)

GO

[解决办法]

cmd.ActiveConnection=conn
cmd.CommandType=adCmdStoredProc
cmd.CommandText= "pro_AscClub_PersonBar_sel "
cmd.Parameters.Refresh
cmd.Parameters( "@Inp_Bar_Type ")=0
cmd.Parameters( "@Inp_Person_ID ")=session( "psnid ")
cmd.Parameters( "@bbs_flag ")=0


cmd.Parameters( "@sc_flag ")=0
'cmd.Execute
rs.Open cmd

热点排行