在临时表插入中与sproc连接变量

时间:2014-04-29 15:10:02

标签: sql tsql stored-procedures temp-tables

我目前有一个查询,它根据前一个查询的结果在临时表中运行n次插入。放入临时表的结果来自一个sproc。

我还想在表中插入一个正在使用的变量(但不在sproc中使用)。例如:

--somewhere up top
Declare @userID int --This is used to get info before the important part
Declare @someOtherID int --This is passed into the sproc

--Some stuff happens here that is unrelated to question

--Important part
while (@@rowcount > 0)
begin
  insert @tmp2 exec spThisSprocDoesntContainOrCareAboutUserID @someOtherID
  delete from @tmp where [someID]=@someOtherID
  select top 1 @id=[id], @someOtherID=[someID] from @tmp
end

SELECT * FROM @tmp2

我想要做的还是在@ tmp2的每一行中插入上一节中使用的userID。像

这样的东西
insert @tmp2 @userID + exec spThisSprocDoesntContainOrCareAboutUserID @someOtherID

显然,这不会奏效。但是,这是我想要做的一般想法。

有人对此有任何建议吗?

(请注意,我不想修改sproc /制作一个类似的变量,也可以将变量传递回结果,如果我能帮助它的话。不是不可能,只是不愿意到)

1 个答案:

答案 0 :(得分:1)

你可以通过一个额外的步骤(如你所提到的那样在sp中没有任何修改)

insert @tmp3 exec spThisSprocDoesntContainOrCareAboutUserID @someOtherID
insert @tmp2 Select @userId, field1, field2 from @temp3