【发布时间】:2015-01-19 15:41:54
【问题描述】:
我已对现有存储过程 (dbo.pr1) 进行了更改,以便它现在调用第二个存储过程 (dbo.pr2)。
这两个存储过程都通过最终的 SELECT 查询返回数据。
在 dbo.pr1 中,我现在添加了以下行:
EXEC @var1 = dbo.pr2
我这样做是为了将 dbo.pr2 中的值分配给变量 @var1(dbo.pr2 返回一个位)。
但是,现在当我执行 dbo.pr1 时,我得到了两个结果,而不是预期的结果。我在 dbo.pr1 的末尾获得了 SELECT 查询结果,但我也从 dbo.pr2 获得了 SELECT 查询结果。
我无法更改 dbo.pr2,因为它正在系统的其他地方使用。当我执行 dbo.pr1 时,有没有办法可以阻止其结果显示?
【问题讨论】:
-
我确定有 - 你能显示存储过程吗?
-
如果您还没有,请尝试将其放入 pr2: SET NOCOUNT ON;
-
另一个建议,如果这些存储过程的目的只是返回一个数据表,那么将它们更改为表值函数。
-
语法:
EXEC @var1 = dbo.pr2只会接收在被调用过程中执行的RETURN语句的值,并且仅当它是整数时。要返回SELECT的结果,您需要使用INSERT ... EXEC ...语法。
标签: sql sql-server tsql