如何处理 SQL 过程中多个表的输出?
Posted
技术标签:
【中文标题】如何处理 SQL 过程中多个表的输出?【英文标题】:How to process output of multiple tables from SQL procedure? 【发布时间】:2016-09-12 09:58:31 【问题描述】:我有一个生成两个表作为输出的过程,但是当我运行它时会产生错误。我想将两个表都传递给局部变量。
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
语句本身运行良好。
我的猜测是我以错误的方式声明过程的输出。我不确定正确的方法是什么。非常感谢您的帮助!
【问题讨论】:
【参考方案1】:经过进一步研究,我发现我在这里尝试做的事情是不可能的。来自MS knowledge base:
在 SQL Server 2016 中,存储过程 sp_execute_external_script 的 R 输出仅限于单个 data.frame 或数据集。 (将来可能会取消此限制。)
但是,除了数据集之外,您还可以返回其他类型的输出。例如,您可以使用单个数据集作为输入来训练模型,但返回一个统计表作为输出,以及作为对象的训练模型。
【讨论】:
以上是关于如何处理 SQL 过程中多个表的输出?的主要内容,如果未能解决你的问题,请参考以下文章
ip报文发送时进行分片 在发送过程中丢失一个或是多个片时如何处理 以及如何分辨丢失与否?