Sql server 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
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查询呢?也就是说,如果允许您启用数据访问,出于安全考虑,他们会非常反对,但谢谢,这是个好主意!你能把这个过程写成函数吗?然后你可以利用交叉申请…很糟糕,但我希望有办法。谢谢