Sql server SQL Server:将存储过程输出的输出保存到其他表中

Sql server SQL Server:将存储过程输出的输出保存到其他表中,sql-server,join,stored-procedures,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 现在,我要做的是将此存储过程的输出插入到一个包含其他列的表中,例如: DE

作为一个简单的示例,假设我的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'

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

如果您无法修改该过程,并且OPENQUERY不受欢迎,那么不,没有更好的方法了。

有什么特殊原因不在您的过程中使用
选择…进入…
吗?在我的初始过程中?这是因为这是我的DB管理员给我的一个过程,我无法控制它的内容。至于在插入记录时使用SELECT INTO,正如我所说,我知道我可以这样做并加入结果,但我很好奇,是否有一种方法可以通过SQL Server中的某种加入/交叉应用程序来直接插入记录。OPEN查询呢?也就是说,如果允许您启用数据访问,出于安全考虑,他们会非常反对,但谢谢,这是个好主意!你能把这个过程写成函数吗?然后你可以利用交叉申请…很糟糕,但我希望有办法。谢谢