,它输出了两个记录集,第一个是空的,第二个才是我要的.
------------------------------
asp不会,但
如果这个正确,就在页面上找缺点,不是过程问题

解决方案 »

  1.   

    调用存储过程的ASP程序写过不少,结构就是这样,不会错的.关键是存储过程有两个记录集,有没有办法使得存储过程不输出第一个记录集呢?
      

  2.   

    asp不能取第二个结果集?例如c#取da.fill(ds);
    ds.tables[1]就是你要的了,
    ds.tables[0]就是没用的
      

  3.   

    例如c#取 da.fill(ds); 
    ds.tables[1]就是你要的了, 
    ds.tables[0]就是没用
      

  4.   

    CREATE PROCEDURE [dbo].[PageSeg]
    @totalpage INT OUTPUT,
    --@sqlstr NVARCHAR(4000),
    @currentpage INT,
    @pagesize INT 
    AS
    SET NOCOUNT ONDECLARE @P1 INT, @rowcount INT,@sqlstr varchar(1000)set @sqlstr='select * from tb'
    --> 笨方法,用临时表将空结果集接收了,动态用##动态生成:
    create table # (id int, name varchar(5), type varchar(5), total int)
    insert into # EXEC sp_cursoropen @P1 OUTPUT,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount OUTPUTSET @currentpage=(@currentpage-1)*@pagesize+1
    IF @rowcount%@pagesize=0
        SET @totalpage=CEILING(@rowcount/@pagesize)
    ELSE
        SET @totalpage=CEILING(@rowcount/@pagesize)+1EXEC sp_cursorfetch @P1,16,@currentpage,@pagesize EXEC sp_cursorclose @P1
    go
      

  5.   

    关键是不知道 ASP 里怎么取第二个结果集.查了ADO 手册里的 Command 对象和 RecordSet 对象的有关条目,也找不到类似于 table 什么的属性.
      

  6.   

    小楼的办法倒是能输出,数据量是十万数量级的,根据查询所得到的结果一般为几千条,这样再做一个表会对性能产生影响吧?如果是这要,倒不如不用游标,直接把#表添加一个identity列,然后根据它的值进行分页了.
      

  7.   

    这个倒不会,EXEC sp_cursoropen输出的是一个空结果集,几乎没影响。但不是最恰当的处理办法。