ALTER PROC [dbo].[sp_PageView]
@Sql ntext, --要执行的sql语句
@PageIndex int=1, --要显示的页码
@PageSize int=10, --每页的大小
@PageCount int OUTPUT, --总页数
@RecordCount int OUTPUT
AS
SET NOCOUNT ON
DECLARE @p1 int
--初始化分页游标
EXEC sp_cursoropen
@cursor=@p1 OUTPUT,
@stmt=@sql,
@scrollopt=1,
@ccopt=1,
@rowcount=@PageCount OUTPUT
--计算总页数
IF ISNULL(@PageSize,0)<1
SET @PageSize=10
SET @RecordCount = @PageCount
SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
IF ISNULL(@PageIndex,0)<1 OR ISNULL(@PageIndex,0)>@PageCount
SET @PageIndex=1
ELSE
SET @PageIndex=(@PageIndex-1)*@PageSize+1
--显示指定页的数据
EXEC sp_cursorfetch @p1,16,@PageIndex,@PageSize
--关闭分页游标
EXEC sp_cursorclose @p1 上面的是一个分页存储过程,求解:
1:为什么执行会先返回一个空的结果集
2:可以去掉吗
@Sql ntext, --要执行的sql语句
@PageIndex int=1, --要显示的页码
@PageSize int=10, --每页的大小
@PageCount int OUTPUT, --总页数
@RecordCount int OUTPUT
AS
SET NOCOUNT ON
DECLARE @p1 int
--初始化分页游标
EXEC sp_cursoropen
@cursor=@p1 OUTPUT,
@stmt=@sql,
@scrollopt=1,
@ccopt=1,
@rowcount=@PageCount OUTPUT
--计算总页数
IF ISNULL(@PageSize,0)<1
SET @PageSize=10
SET @RecordCount = @PageCount
SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
IF ISNULL(@PageIndex,0)<1 OR ISNULL(@PageIndex,0)>@PageCount
SET @PageIndex=1
ELSE
SET @PageIndex=(@PageIndex-1)*@PageSize+1
--显示指定页的数据
EXEC sp_cursorfetch @p1,16,@PageIndex,@PageSize
--关闭分页游标
EXEC sp_cursorclose @p1 上面的是一个分页存储过程,求解:
1:为什么执行会先返回一个空的结果集
2:可以去掉吗
set @p4=10
declare @p5 int
set @p5=96
exec sp_PageView @Sql='select * from user',@PageIndex=1,@PageSize=10,@PageCount=@p4 output,@RecordCount=@p5 output
select @p4, @p5执行后会有一个空的user结果集,一个正确分页的结果集和正确的后两个输出数据分页是正确的,只是不清楚为什么会有一个空的结果集
把代码从最后一行一行的去掉。。然后return 'succ' 一点一点的试就知道哪里出问题了。
别着急