【问题标题】:Insert data into table using select & execute procedure使用选择和执行过程将数据插入表中
【发布时间】:2014-02-04 06:23:57
【问题描述】:

我想同时使用 select 语句和执行过程将数据插入到表中。

也就是说...假设表“TEMP”有 4 列 A、B、C、D。 A & B 列值将来自 SELECT 语句,C、D 列值将来自执行任何存储过程。

我尝试过关注但没有遇到错误。

INSERT INTO TEMP
SELECT R1.A, R1.B, R2.C, R2.D FROM 
(SELECT A , B FROM SOME_TABLE) AS R1
CROSS JOIN EXEC [dbo].[SOME_PROCEDURE] @SOME_VARIABLE1 ) AS R2

错误是:

Incorrect syntax near the keyword 'exec'

【问题讨论】:

标签: sql sql-server stored-procedures sql-server-2008-r2


【解决方案1】:

检查一下……

declare @var int

    exec EXEC [dbo].[SOME_PROCEDURE] @SOME_VARIABLE1,@output=@var


    INSERT INTO TEMP
    SELECT R1.A, R1.B, R2.C, R2.D FROM 
    (SELECT A , B FROM SOME_TABLE) AS R1
    CROSS JOIN @var) AS R2

【讨论】:

  • 你的意思是我应该返回输出变量?
【解决方案2】:

您不能在 JOIN 中使用存储过程。首先将存储过程的结果集存储在一个临时表中,然后在 JOIN 中使用这个临时表。

-- First create the table to which we want to push the SP result
CREATE TABLE #TempTableName(..........)

-- Insert result from the SP to temp table
INSERT INTO #TempTableName
EXEC [dbo].[SOME_PROCEDURE] @SOME_VARIABLE1 

然后加入

INSERT INTO TEMP
SELECT R1.A, R1.B, R2.C, R2.D FROM 
(SELECT A , B FROM SOME_TABLE) AS R1
CROSS JOIN #TempTableName AS R2

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多