中心思想
在存储过程中判断page的值其实在ASP中无需用存储过程来进行分页的了,只需要一些简单的SQL,然后传参数

解决方案 »

  1.   

    怎么在存储过程中判断page的值?不懂啊。如何将一个存储过程的执行结果进行分页?
    比如执行exec p_exam '2','',''显示很多记录。如何将这个执行存储过程在asp中分页显示。
    请高手给个例子,谢谢!
      

  2.   

    执行一个存储过程得到记录结果集,asp程序如何将其分页显示呢?高手快来啊,多谢!
      

  3.   

    是显示到dataGrid里吧?网上搜索一下,很多的。
    楼主也可以到CSDN的ASP.NET去搜索一下
      

  4.   

    没有显示到dataGrid里啊,只希望在asp页面中显示分页,没有人会吗?N长时间了。
      

  5.   

    http://community.csdn.net/Expert/topic/4513/4513325.xml?temp=.7571527
    看看这个,是不是达到你的要求
      

  6.   

    SQL Server 2000只是DBMS,并不具备应用程序界面设计功能(2005的reporting service是新的扩展),你的思路应该从应用程序的容器去发掘分页的功能,比如datagrid,datalist等
      

  7.   

    没错,通过存储过程我可以得到结果集了,现在我就希望能通过asp程序将其分页显示啊,难道没有办法吗?
      

  8.   

    首先,你做个存储过程的分页参数定为,显示条目数,第几页,以及你可能需要的判定值等
    然后在ASP中取表的中的这些值直接存储过程就能得到分页的数据结果集我有写过的一个,但这个有点是多表模糊查询的
    你自己研究create proc mh_provide_info(@name varchar(500),@page int,@crent_page int)----分页的供应商询价单信息,@page显示数,@crent_page当前页,模糊查询
    as
    begin
    SET NOCOUNT  ON
    declare
    @sql varchar(2000),
    @p int
    set @p=@page*(@crent_page-1)
    set @sql=''
    select @sql=@sql+' or c.name like '''+'%'+pro_name+'%'+''''
    from dbo.provide_info
    where pro_name like ''+'%'+@name+'%'+''
    set @sql='
    select top '+rtrim(convert(varchar,@page))+' *
    from 
    (select *
    from ( 
    select paskinfo_id,stuff(dbo.l_name(paskinfo_id),1,1,'''') as name,pask_date,state
    from dbo.pro_askinfo ) c where ' +stuff(@sql,1,3,'')+') e
    where e.paskinfo_id not in (select top '+rtrim(convert(varchar,@p))+' paskinfo_id 
    from 
    (select *
    from (
    select paskinfo_id,stuff(dbo.l_name(paskinfo_id),1,1,'''') as name,pask_date,state
    from dbo.pro_askinfo ) c where '+stuff(@sql,1,3,'')+') f 
    order by f.paskinfo_id desc)
    order by e.paskinfo_id desc
    '
    exec (@sql)
    SET NOCOUNT  Off 
    end
    这是个模糊查询的,牵连多表
    其中就涉及分页的
      

  9.   

    假设存储过程已经在系统中使用了,不能修改,比如是系统存储过程或者加密的存储过程。create table #tb (Text varchar(1000) )
    ---#tb 数据库结构和存储过程返回的结果结构一概一样。这里随便写一下。
    insert   #tb  exec exec p_exam '2','',''
    ---这句话把存储过程执行结果返回到临时表里。
    select * from #tb--drop table #tb 再把这个#tb表分页,分页的原理declare @SQLStr varchar(8000)
    set @SQLStr='SELECT Top '+cast(@每页大小 as varchar)+' * FROM 表 WHERE 主键列 NOT IN (SELECT TOP '+cast(@每页大小*@第几页 as varchar)+' 主键列 from 表 )'
    exec(@SQLStr)可以根据自己的实际情况把分页后的结果做缓存。缓存方法1:缓存在数据库的若干小表里,命名 myChachePage1,myChachePage2等
    缓存方法2:缓存在XML,参考关于XML的存储过程。
                 sp_xml_preparedocument 、sp_xml_removedocument 等
    缓存方法3:直接生成静态页面,Page1,Page2等,参考sp_makewebtask  存储过程
    缓存方法4:在.net开发中有关于缓存的强大支持,请研究.net 的System.Web.Caching 命名空间
      

  10.   

    --drop table #tb为什么要注释掉呢?这样不是在系统中一直存在这个临时表吗?什么时候应该删除临时表合适呢?
      

  11.   

    LZ看清楚我写的存储过程吧在说,我的就是返回结果集的,并且是模糊查询功能
    其实你没必要这么复杂的
    我做的那个是模糊查询随便找个ASP分页程序,然后加上查询语句就完了,很简单的