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")を試しましたが、次のエラーが発生します。

'SETS'の近くに構文が正しくありません。

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 
関連する問題