ASP程序与SQL存储过程结合使用详解(9)


       SET @IRECORDCOUNT = @@ROWCOUNT

       --确定总页数
       IF @IRECORDCOUNT%@IPAGESIZE=0
          SET @IPAGECOUNT=CEILING(@IRECORDCOUNT/@IPAGESIZE)
       ELSE
          SET @IPAGECOUNT=CEILING(@IRECORDCOUNT/@IPAGESIZE)+1

       --若请求的页号大于总页数,则显示最后一页
       IF @IPAGE > @IPAGECOUNT
          SELECT @IPAGE = @IPAGECOUNT

       --确定当前页的始末记录
       DECLARE @ISTART INT    --START RECORD
       DECLARE @IEND INT      --END RECORD
       SELECT @ISTART = (@IPAGE - 1) * @IPAGESIZE
       SELECT @IEND = @ISTART + @IPAGESIZE + 1

       --取当前页记录    
       SELECT * FROM #T WHERE ID>@ISTART AND ID<@IEND

       --删除临时表
       DROP TABLE #T

       --返回记录总数
       RETURN @IRECORDCOUNT
    END
    GO

    在上面的存储进程中,输入当前页号及每页记录数,返回当前页的记录集,总页数及记录总数。为了更具典型性,将记录总数以返回值的形式返回。以下是调用该存储进程的ASP代码(具体的分页操作略去):

   '**调用分页存储进程**
    DIM PAGENOW,PAGESIZE,PAGECOUNT,RECORDCOUNT
    DIM MYCOMM,MYRST
    PAGENOW = REQUEST("PN")
    '自定义函数用于验证自然数
    IF CHECKNAR(PAGENOW) = FALSE THEN PAGENOW = 1
    PAGESIZE = 20
    SET MYCOMM = SERVER.CREATEOBJECT("ADODB.COMMAND")
    WITH MYCOMM
       .ACTIVECONNECTION = MYCONSTR         'MYCONSTR是数据库连接字串
       .COMMANDTEXT      = "GETUSERLIST"     '指定存储进程名
       .COMMANDTYPE      = 4                 '表明这是一个存储进程
       .PREPARED         = TRUE             '要求将SQL命令先行编译

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2213.html