【问题标题】:SQL Server : save output from stored procedure output into a different tableSQL Server:将存储过程输出的输出保存到不同的表中
【发布时间】:2018-03-19 16:43:14
【问题描述】:

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

我知道我可以创建一个临时表来从存储过程中获取数据,然后自己进行联接,但我想知道是否有更好的方法来完成此操作 - 一种联接或交叉应用于存储的过程。

【问题讨论】:

  • 有什么特殊原因为什么您不在程序中使用SELECT...INTO...
  • 在我的初始程序中?那是因为这是我的数据库管理员给我的一个程序,我无法控制它的内容。至于使用 SELECT INTO 插入记录,就像我说的那样,我知道我可以这样做并加入结果,但我很想知道是否有办法通过某种加入/交叉来做到这一点-直接在 SQL Server 中申请。
  • 操作查询怎么样?也就是说,如果您被允许启用数据访问
  • 出于安全考虑,他们对此表示不满,但谢谢,这是个好主意!
  • 你能把proc写成一个函数吗?然后你可以利用交叉应用...

标签: sql-server join stored-procedures


【解决方案1】:

如果你不能修改 proc,而且 OPENQUERY 不受欢迎,那么不行,没有更好的办法。

【讨论】:

  • 糟透了,但我希望有办法。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
相关资源
最近更新 更多