如何在执行sp_execute_external_script命令时将多个结果集放入变量或临时表中?

时间:2017-01-21 20:26:27

标签: sql-server r sql-server-2008 stored-procedures sql-server-2016

我有一个存储过程,它在while循环中包含以下sp_execute_external_script命令,我将分别获得每个返回结果集的输出。我正在使用SQL Server 2016来完成所有这些工作。

EXECUTE sp_execute_external_script @language = N'R',@script = N' some R code here ' ,@input_data_1 = N' SELECT * FROM #TempTable;'  
WITH 
    RESULT 
        SETS 
            (
                (
                    [filename] NVARCHAR(MAX), 
                    [mobile_fraction] NVARCHAR(MAX), 
                    [t_half] NVARCHAR(MAX), 
                    [r_square] NVARCHAR(MAX) 
                )
            );

我想将结果集的所有返回数据存储到@variable(或#temptable)中,以便我能够继续处理这些数据。我已尝试过上述两种情况(例如INSERT INTO @variable EXEC "myStoredProcedure"),但我收到以下错误

  

' SETS'附近的语法不正确。

如果删除INSERT INTO @variable行,一切正常。所以,我想知道我是否可以使用这样的"技术"使用execute sp_execute_external_script命令。

1 个答案:

答案 0 :(得分:0)

只要输出架构与表架构匹配,只要删除INSERT..EXEC

WITH RESULTS SETS就会起作用。

DECLARE @Temp TABLE
(
  Test NVARCHAR(MAX)
)

INSERT INTO @Temp
EXECUTE sp_execute_external_script @language = N'R',@script = N'OutputDataSet <- as.data.frame(c("test"))' ,@input_data_1 = N''  

SELECT * FROM @TEMP