【发布时间】:2011-03-20 18:37:51
【问题描述】:
假设我有一些返回结果集的存储过程(我无法更改它):
create procedure test_procedure
as
begin
select 1
end
我知道我可以将结果集插入到表中,所以它会对调用代码隐藏:
declare @t table(i int)
insert into @t
exec test_procedure
还有其他方法可以隐藏调用代码返回的结果集吗?
更新
看起来我有点困惑。我只寻找 T-SQL 答案(不是 .NET 答案)。
【问题讨论】:
-
返回这个结果集到底有什么问题?您总是可以忽略结果集并让垃圾收集器处理它。
-
@Cylon Cat RE“让垃圾收集器处理它”甚至不是这种情况。 TDS 是一种流式传输协议...如果您不读取结果,它不一定会返回给客户端。即使它的一部分返回给客户端,它们也可以用本机代码处理,除非使用 DataReader 等人读取。
-
Cylon Cat:如果我不能忽略结果集怎么办?例如调用我的过程的代码假定没有返回结果集。
-
@Andrew Ah ... 致电
Command.ExecuteNonQuery(不会读取结果集)或Command.Cancel(如果您只想读取部分结果集)。正如我之前所说,TDS 是流协议,使用 ExecuteNonQuery 将导致没有完整的结果集返回给客户端(如果结果集很小我可能会相信) -
我已经更新了问题。我只寻找 SQL 答案,而不是 .NET 答案。通过调用代码,我的意思是另一个存储过程,或者一些 sql 批处理。
标签: sql-server tsql stored-procedures resultset