问题描述
|
好的,这可能很简单,但是我找不到解决方案。
我开始在T-sql中使用游标,并且正在使用它们。
但是,如果我通过Execute-Button在Management Studio中执行结果,则不会得到结果。我得到的只是“命令成功执行”。
如果我调试它,我将得到结果,下次单击执行时,我还将得到结果...
有某种缓存吗?还是我做错了?
脚本如下所示:
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:自然,我在印刷前用过select,同样的问题。
解决方法
啊,我明白你的意思。第一次运行以下脚本时,它会产生结果。在随后的情况下,没有任何反应(除非您在新的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
问题是您如何检查“ 2”值。它以新连接的0
开始,但是您的脚本将其留在-1
。
您需要在循环之前的第一行“ 5”。有关正常模式,请参见此博客文章。
, 如果可以,请尝试切换标签页:
听起来好像您在“消息”选项卡上
编辑
另外,在进一步查看之后,您是在此之后选择光标数据还是整个脚本?我问是因为看起来好像您只是在设置变量,而不对它们做任何事情(当然,ѭ6除外)。
, 使用查看结果作为文本选项