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
关键是不知道 ASP 里怎么取第二个结果集.查了ADO 手册里的 Command 对象和 RecordSet 对象的有关条目,也找不到类似于 table 什么的属性.
ds.tables[1]就是你要的了,
ds.tables[0]就是没用的
ds.tables[1]就是你要的了,
ds.tables[0]就是没用
@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