Tsql Management Studio不显示来自游标的结果
好的,这可能是一个简单的问题,但我找不到解决办法。 我开始使用T-SQL中的游标,并且正在使用它们 但是,如果我在ManagementStudio中通过“执行”按钮执行结果,则不会返回结果。我得到的只是命令成功执行 如果我调试它,我会得到结果,下次单击execute时,我也会得到结果 有什么缓存吗?还是我做错了 脚本如下所示:Tsql Management Studio不显示来自游标的结果,tsql,cursor,ssms,Tsql,Cursor,Ssms,好的,这可能是一个简单的问题,但我找不到解决办法。 我开始使用T-SQL中的游标,并且正在使用它们 但是,如果我在ManagementStudio中通过“执行”按钮执行结果,则不会返回结果。我得到的只是命令成功执行 如果我调试它,我会得到结果,下次单击execute时,我也会得到结果 有什么缓存吗?还是我做错了 脚本如下所示: declare @po varchar(20), @prod varchar(50), @qty integer, @type varchar(20)
declare @po varchar(20), @prod varchar(50), @qty integer, @type varchar(20)
declare db_cursor cursor for
select product, po, qty, space(1) as btype from header
for read only
open db_cursor
while @@FETCH_STATUS=0
begin
fetch db_cursor into @po, @prod, @qty, @type
if @qty<1000
set @type = 'small'
else
set @type = 'large'
print @type
end
close db_cursor
deallocate db_cursor
PS:当然,我使用了打印前选择,同样的问题。如果可以,请尝试切换选项卡: 听起来你好像在“消息”选项卡上 编辑
另外,在仔细查看之后,您是在选择光标数据,还是选择了整个脚本?我这样问是因为看起来你只是在设置变量,除了打印之外什么都不做。使用查看结果作为文本选项。啊,我明白你的意思了。在第一次运行下面的脚本时,它会产生结果。在随后的情况下,除非您在新的SSMS窗口中尝试,否则不会发生任何事情
declare @po varchar(20), @prod varchar(50), @qty integer, @type varchar(20)
declare db_cursor cursor for
select name, name, number, space(1) as btype from master..spt_values
for read only
open db_cursor
while @@FETCH_STATUS=0
begin
print 'y'
fetch db_cursor into @po, @prod, @qty, @type
if @qty<1000
set @type = 'small'
else
set @type = 'large'
print @type
end
close db_cursor
deallocate db_cursor
问题是如何检查@@FETCH\u状态值。在新连接中,该值从0开始,但脚本将其保留为-1
您需要在循环之前获取第一行。有关正常模式,请参阅。看起来您无需光标即可完成此操作。你为什么要用它?真的吗?那会是什么样子?