2016-09-12 3 views
0

出力として2つのテーブルを生成するプロシージャがありますが、実行するとエラーが発生します。両方のテーブルをローカル変数に渡したいと思います。SQLプロシージャから複数のテーブルの出力を処理するには?

DECLARE @model_data_stats TABLE (var VARCHAR(150), center FLOAT, scale FLOAT); 
DECLARE @model_log_stats TABLE (var VARCHAR(150), zero INT, plusone INT, plustwo INT); 
DECLARE @model_logit VARBINARY(MAX); 

EXEC sp_execute_external_script @language = N'R', 
    @script = N' 
     #R script, irrelevant to question 
     #the following variables are assigned: 
     data_stats <- table 
     log_stats <- table 
     trained_model <- varbinary(max) data type 
    ', 
    @input_data_1 = N'SELECT * FROM dbo.Table', 
    @params = N'@data_stats TABLE (var VARCHAR(150), center FLOAT, scale FLOAT) OUTPUT, 
       @log_stats TABLE (var VARCHAR(150), zero INT, plusone INT, plustwo INT) OUTPUT, 
       @trained_model VARBINARY(MAX)', 
    @data_stats = @model_data_stats OUTPUT, 
    @log_stats = @model_log_stats OUTPUT, 
    @trained_model = @model_logit OUTPUT; 

これは私がコードを実行したとき、私は取得エラーです:

Msg 156, Level 15, State 1, Line 1 
Incorrect syntax near the keyword 'TABLE'. 

これは、エラーを生成するTABLEののoccurance私にしても特に明確ではないのですが、私の推測では、出力部分です変数は(@paramsの後に)定義されます。 DECLAREの文自体はうまく動作します。

私は間違った方法でプロシージャの出力を宣言していると思います。私は正しい方法が何であるかわからない。ヘルプは非常に高く評価されるだろう!

答えて

0

私がここでやろうとしていることは不可能であることがわかりました。 MS knowledge baseから:

のSQL Server 2016年に、ストアドプロシージャsp_execute_external_scriptからRの出力は、単一のdata.frameまたはデータセットに限定されます。 (この制限は将来削除される可能性があります)。

ただし、データセットに加えて他のタイプの出力も返すことができます。たとえば、1つのデータセットを入力として使用してモデルを訓練し、出力としての統計表と訓練されたモデルをオブジェクトとして戻すことができます。

関連する問題