SQL Server:将存储过程输出的输出保存到不同的表中

时间:2018-03-19 16:43:15

标签: sql-server join stored-procedures

举一个简单的例子,假设我的SQL Server数据库中有以下存储过程产生输出:

CREATE PROCEDURE MyProc
    (@Id INT, 
     @Var1 VARCHAR(100))
AS
BEGIN
    SELECT
        Id = @Id,
        Var1 = @Var1,
        Var2 = LTRIM(@Id) + ' - ' + @Var1
END

现在,我想要做的是将此存储过程的输出插入到包含其他列的表中,例如:

DECLARE @NewTable TABLE 
(
     ExtraCols INT, 
     Id INT, 
     Var1 VARCHAR(100), 
     Var2 VARCHAR(MAX)
)

所以,我想做一些事情:

DECLARE @RunVars TABLE (ExtraCols INT, Id INT, Var1 VARCHAR(100))
    INSERT INTO @RunVars (ExtraCols, Id, Var1)
    VALUES (123, 1, 'Test'),
           (456, 2, 'Test 1')

然后,在通过存储过程运行@RunVars的每一行之后,最后得到:

@NewTable

ExtraCols  Id       Var1        Var2
---------------------------------------------
123         1       'Test'      '1 - Test'
456         2       'Test 1'    '2 - Test 1'

我知道我可以创建一个临时表来从存储过程中获取数据,然后自己进行连接,但我想知道是否有更好的方法来实现这一点 - 一种连接或交叉申请存储过程。

1 个答案:

答案 0 :(得分:1)

如果你不能修改过程,并且OPENQUERY不赞成,那么不,没有更好的办法。