DECLARE bookid_cursor SCROLL CURSOR for
SELECT * FROM bookinfo 
OPEN bookid_cursor
DECLARE @bookid INT,@readerid INT
--这里没先提取
WHILE @@FETCH_STATUS=0
BEGIN
FETCH next FROM bookid_cursor INTO @bookid,@readerid
PRINT '书本id:'+ CAST( @bookid AS NVARCHAR(5)) +' 读者id:' + CAST( @readerid AS NVARCHAR(5))
END
CLOSE bookid_cursor
这样的话就什么也没print,只显示命令完成。想要下解释。DECLARE bookid_cursor SCROLL CURSOR for
SELECT * FROM bookinfo 
OPEN bookid_cursor
DECLARE @bookid INT,@readerid INT
FETCH next FROM bookid_cursor INTO @bookid,@readerid  --在这里先提取之后却遍历了结果集
WHILE @@FETCH_STATUS=0
BEGIN
FETCH next FROM bookid_cursor INTO @bookid,@readerid
PRINT '书本id:'+ CAST( @bookid AS NVARCHAR(5)) +' 读者id:' + CAST( @readerid AS NVARCHAR(5))
END
CLOSE bookid_cursor为什么方法二就正确?

解决方案 »

  1.   

    @@FETCH_STATUS   
    返回针对连接当前打开的任何游标发出的上一条游标 FETCH 语句的状态
      

  2.   

    返回针对连接当前打开的任何游标发出的上一条游标 FETCH 语句的状态。(联机帮助有)返回值  说明  
    0      FETCH 语句成功。
    -1     FETCH 语句失败或行不在结果集中。
    -2     提取的行不存在。
     
      

  3.   

    to:happyflystone
    按你说第一种while循环根本就没执行到啦??