1

У меня есть хранимая процедура, которая содержит следующую команду sp_execute_external_script внутри цикла while, и я получаю как вывод каждого возвращаемого результирующего набора отдельно. Я использую SQL Server 2016 для выполнения всего этого.Как получить несколько наборов результатов в переменную или временную таблицу при выполнении команды sp_execute_external_script?

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"), но я получаю следующее сообщение об ошибке

Неправильный синтаксис рядом с «НАСТРОЙКИ».

Если я удаляю линию INSERT INTO @variable, все работает нормально. Поэтому мне было интересно, могу ли я использовать такую ​​«технику» с командой execute sp_execute_external_script.

ответ

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