Ale*_*gas 21 sql-server stored-procedures cursors
在存储过程中,在游标内调用另一个存储过程.对于每个调用,SQL Management Studio结果窗口都显示结果.光标循环超过100次,此时结果窗口放弃了错误.有没有办法可以阻止光标中的存储过程输出任何结果?
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC @RC = dbo.NoisyProc
SELECT @RValue2 = 1 WHERE @@ROWCOUNT = 0
FETCH NEXT FROM RCursor INTO @RValue1, @RValue2
END
Run Code Online (Sandbox Code Playgroud)
谢谢!
6eo*_*son 31
您可以按照以下步骤丢弃SQL Server Mgmt Studio 2005中的结果集:
•在查询窗口中单击鼠标右键
•选择"查询选项"
•单击左侧面板树视图中的"结果""节点"
•在表单的中间/右侧选中"执行后放弃结果"
你可以尝试一下
DECLARE @i int
SET @i = 1
WHILE (@i <= 100)
BEGIN
SELECT @i as Iteration
SET @i = @i + 1
END
Run Code Online (Sandbox Code Playgroud)
Ste*_*owe 14
您可以将结果插入临时表,然后删除临时表
create table #tmp (columns)
while
...
insert into #tmp exec @RC=dbo.NoisyProc
...
end
drop table #tmp
Run Code Online (Sandbox Code Playgroud)
否则,你可以修改被调用的proc来接受一个告诉它不输出结果集的标志吗?
小智 10
我知道这个问题很旧,但你可以设置SET NOCOUNT ON
为阻止SP为每一行输出一条消息.