将存储过程和其他变量插入临时表

时间:2017-05-26 14:56:12

标签: sql sql-server

我有一个存储过程和3个变量。我需要将它们全部插入临时表中的同一行。这可能吗?我试过了

INSERT INTO #Temp (@Ad, @B, @C, @SPInt) 
    SELECT 
        @Ad, @B, @C, EXEC sp_XYZ @A, @B, @C

但这不起作用。

2 个答案:

答案 0 :(得分:3)

这种最简单的方法是修改存储过程以返回输入参数以及其他所有内容。

如果没有,您需要将输出结果存储在某处,然后插入#Temp。这是一种方式:

create table #temp_exec (. . .);
insert into #temp_exec ( . . . )
    exec sp_xyz @A, @B, @C;

insert into #temp (a, b, c, . . . )
    select @A, @B, @C, . . .
    from #temp_exec;

如果#temp开头为空,那么您不需要另一张桌子:

insert into #temp ( . . . )
    exec sp_xyz @A, @B, @C;

update #temp
    set a = @A, b = @b, c = @c;

答案 1 :(得分:1)

不,你不能在一个声明中做到这一切。

您可以在一个语句中执行INSERT..EXEC,然后在UPDATE语句中添加变量。但是你必须使用两个不同的语句才能做到这一点。