2016-09-12 52 views
0

我有一個過程生成兩個表作爲輸出,但它運行時會生成一個錯誤。我想將兩個表傳遞給局部變量。如何處理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次數生成錯誤,但我的猜測是部分在輸出變量被定義(在@params之後)。 DECLARE聲明自己運行得很好。

我的猜測是我以錯誤的方式聲明瞭過程的輸出。我不確定什麼是正確的方式。幫助將不勝感激!

回答

0

經過一些進一步的研究,我發現我在這裏試圖做的是不可能的。從MS knowledge base

在SQL Server 2016中,來自存儲過程sp_execute_external_script的R輸出僅限於單個數據幀或數據集。 (此限制可能會在未來刪除。)

但是,除數據集外,還可以返回其他類型的輸出。例如,您可以使用單個數據集作爲輸入來訓練模型,但返回一個統計數據表作爲輸出,並將訓練後的模型作爲對象返回。

相關問題