我并不是说要进行“ 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)就停止了。
我想我找到 了 解决方案。
因此,我现在可以在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的内容?空表或什么?