是否可以在不使用表变量或临时表的情况下,在另一个存储过程中使用一个存储过程的结果?逻辑如下:
IF (@example = 1)
BEGIN
DECLARE #temp TABLE (Id INT);
INSERT INTO #temp
EXEC [Procedure1] @ItemId = @StockId
set @Cost = (select top 1 id from #temp)
理想情况下,我想知道是否有一种方法可以不必使用临时表。在网上四处张望,但找不到任何有效的方法。任何建议都很好。
答案 0 :(得分:0)
通常,如果要在SELECT
中使用用户定义的代码,则最好将代码用短语定义为用户定义的 function 而不是用户定义的过程。
也就是说,应该使用过程来产生副作用,而应该使用函数来返回值。
也就是说,您可以使用openquery
(记录在here中)在链接服务器上运行exec
。链接的服务器可以是您正在运行的服务器。