【发布时间】:2012-09-04 14:31:38
【问题描述】:
我面临的问题是我有一个存储过程(我们称之为 sp_one),它在运行期间调用另一个存储过程(我们称之为 sp_two)。
我只希望最后返回 sp_one 的结果集,而不是 sp_two 的结果集。我想有一种方法可以从 sp_two 捕获结果,这将阻止它们也被返回,但无法弄清楚它的语法。
有什么想法吗?
一些捕捉正在发生的本质的伪代码(不是我的实际代码):
CREATE PROCEDURE sp_two AS
BEGIN
update Users
set is_valid = 0
select * from Users
END
CREATE PROCEDURE sp_one
AS
BEGIN
exec sp_two
select * from Users
END
exec sp_one
运行 exec sp_one 的结果是 sp_two 的结果集,然后是 sp_one 的结果。 (例如,用户表两次)。
【问题讨论】:
-
您是否单独从其他任何地方调用 sp_two?你需要在 sp_2 中有 select * from users 吗?否则为什么不能在 sp_1 中设置更新用户集 is_valid = 0?
-
嗨,Daniel,不幸的是,我们这样做了——上面的例子过于简单化了,我保证 sp_two 真的很有用。
标签: sql tsql resultset multiple-resultsets