注册 登录
编程论坛 SQL Server论坛

如何去除CURSOR里LAST后面的空记录行??

orliubc 发布于 2007-11-22 18:42, 1650 次点击
如下: 结果集中有6 条记录
执行之后,窗口中除6条记录外,还有第 7 条空记录(只显示字段)

该如何去除这个LAST后面的空记录显示?
谢谢
(想着用@@CURSOR_ROWS和FOR做,就是做不出来,偶SQL新人,,请教!!!)

USE TEST
GO
IF EXISTS (SELECT name FROM sysobjects Where name='customers_proc')
DROP PROCEDURE customers_proc
GO
CREATE PROCEDURE customers_proc
AS
DECLARE customers_cur scroll CURSOR FOR SELECT * From customers
OPEN customers_cur
FETCH NEXT FROM customers_cur
WHILE @@FETCH_STATUS=0
       BEGIN FETCH NEXT FROM customers_cur
       END
CLOSE customers_cur
DEALLOCATE customers_cur
GO
EXECUTE customers_proc
GO
6 回复
#2
缘吇弹2007-11-22 22:55
CREATE PROCEDURE customers_proc
AS
DECLARE customers_cur scroll CURSOR FOR SELECT * From customers
OPEN customers_cur
DECLARE @i int
SET @i=1
WHILE @i<=6
       BEGIN
            FETCH NEXT FROM customers_cur
            SET @i=@i+1
       END
CLOSE customers_cur
DEALLOCATE customers_cur
GO
EXECUTE customers_proc
GO
#3
orliubc2007-11-23 06:57
谢谢版主,受教!

@i<=6是未知的,换成@i<=@@CURSOR_ROWS-1
#4
purana2007-11-23 09:42
不错.
#5
FFEEDD2007-11-24 13:51
select * from goods
Open G_curs  --打开游标
If @@error=0  --判断游标是否打开
Begin
Fetch next from G_curs --从游标中提取一行数据
while @@Fetch_status=0  --如果表中还有记录继续循环
   Begin
   Fetch next from
G_curs
   End
Close G_curs --关闭游标
DealLocate G_curs --释放游标
End
------------------------------------------------------------------------
受教了,感觉这样做意义不很大,不过学了一招哈哈
提个建议,请在语句后面加上注释,我们新手好看懂啊
#6
good_good_study2007-11-24 16:26
@i<=6是未知的,换成@i<=@@CURSOR_ROWS-1
这个应该改一下,@i<=6是未知的,换成@i<=@@CURSOR_ROWS
也就是把“-1”去掉
#7
good_good_study2007-11-24 17:24
刚才是我错了。对不起大家啊,我重新运行时没有删除原来的存过程!
1