当前位置:  开发笔记 > 数据库 > 正文

从存储过程执行存储过程时如何禁用查询结果?

如何解决《从存储过程执行存储过程时如何禁用查询结果?》经验,为你挑选了3个好方法。

在存储过程中,在游标内调用另一个存储过程.对于每个调用,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

谢谢!



1> 6eorge Jetso..:

您可以按照以下步骤丢弃SQL Server Mgmt Studio 2005中的结果集:

•在查询窗口中单击鼠标右键
•选择"查询选项"
•单击左侧面板树视图中的"结果""节点"
•在表单的中间/右侧选中"执行后放弃结果"

你可以尝试一下

DECLARE @i int
SET @i = 1
WHILE (@i <= 100)
  BEGIN
    SELECT @i as Iteration
    SET @i = @i + 1
  END


这应该是接受的答案 - SSMS选项可以完全按照原始海报的要求进行操作

2> Steven A. Lo..:

您可以将结果插入临时表,然后删除临时表

create table #tmp (columns)

while
    ...
    insert into #tmp exec @RC=dbo.NoisyProc
    ...
end
drop table #tmp

否则,你可以修改被调用的proc来接受一个告诉它不输出结果集的标志吗?



3> 小智..:

我知道这个问题很旧,但你可以设置SET NOCOUNT ON为阻止SP为每一行输出一条消息.


NOCOUNT是好的,因为它保持显示结果的数量,但是6eorge Jetson/Robert Koritnik排除了显示的额外结果集(我认为这是原始问题)?
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有