admin

如何抑制从SQL Server中的另一个存储过程调用的存储过程的SELECT输出?

sql

我并不是说要进行“ SET NOCOUNT
OFF”。但是我有一个存储过程,可用于将一些数据插入某些表中。此过程创建一个xml响应字符串,下面让我举一个例子:

CREATE PROCEDURE [dbo].[insertSomeData] (@myParam int) AS
DECLARE @reply varchar(2048)

... Do a bunch of inserts/updates...

SET @reply = '<xml><big /><outputs /></xml>'
SELECT @reply
GO

因此,我整理了一个脚本,该脚本多次使用此SP,并且xml“输出”变得太多了(它已经使我的盒子崩溃了)。

有没有办法抑制或重定向由此存储过程生成的输出?我不认为修改此存储过程是一种选择。

谢谢。


我想我应该澄清一下。上面的SP被我编写的T-SQL Update脚本调用,该脚本将通过Enterprise Studio Manager等运行。

而且它也不是我曾经写过的最优雅的SQL(有些psuedo-sql):

WHILE unprocessedRecordsLeft
  BEGIN
    SELECT top 1 record from updateTable where Processed = 0
    EXEC insertSomeData @param = record_From_UpdateTable
  END

因此,可以说UpdateTable中有大约5万条记录。该SP被调用50k次,将50k xml字符串写入输出窗口。它并没有停止SQL
Server,只是我的客户端应用程序(SQL Server Management Studio)就停止了。


阅读 216

收藏
2021-05-10

共1个答案

admin

我想我找到 解决方案。

因此,我现在可以在SQL脚本中执行以下操作(sql-psuedo代码):

create table #tmp(xmlReply varchar(2048))
while not_done
  begin
    select top 1 record from updateTable where processed = 0
    insert into #tmp exec insertSomeData @param=record
  end
drop table #tmp

现在,如果有一种更有效的方法可以做到这一点。SQL Server是否具有类似于/ dev / null的内容?空表或什么?

2021-05-10