Я пытаюсь запустить код R внутри скрипта SQL.Сценарий SQL выглядит следующим образом.Следует отметить, что coefficients_mu
, coefficients_sigma
и data_row
- все таблицы с одной строкой.Таблица data_row
имеет столбец с именем Relatienr
.Очевидно, что сценарий намного сложнее, но сейчас я просто хочу, чтобы часть ввода была выводом.
DROP PROCEDURE IF EXISTS ProduceResults;
GO
CREATE PROCEDURE ProduceResults
AS
BEGIN
EXEC sp_execute_external_script
@language = N'R'
, @script = N'Results <- as.data.frame(data_row$Relatienr)'
, @input_data_1 = N'SELECT * FROM coefficients_mu'
, @input_data_1_name = N'coefficients_mu'
, @input_data_2 = N'SELECT * FROM coefficients_sigma'
, @input_data_2_name = N'coefficients_sigma'
, @input_data_3 = N'SELECT * FROM data_row'
, @input_data_3_name = N'data_row'
, @output_data_1_name = N'Results'
WITH RESULT SETS (([Relatienr] numeric(20, 10)));
END;
GO
EXEC ProduceResults
GO
(Как я уже упоминал ранее, таблицы coefficients_mu
, coefficients_sigma
и data_row
существует, и при использовании запроса к этим таблицам проблем нет.) Произошла следующая ошибка:
Msg 214, Level 16, State 175, Procedure sp_execute_external_script, Line 1 [Batch Start Line 75]
Procedure expects parameter '@params' of type 'ntext/nchar/nvarchar'.
Msg 11536, Level 16, State 1, Procedure ProduceResults, Line 4 [Batch Start Line 75]
EXECUTE statement failed because its WITH RESULT SETS clause specified 1 result set(s), but the statement only sent 0 result set(s) at run time.
Я понял, откуда появилась вторая ошибка: хранимая процедура не запускается из-запервая ошибка, следовательно, мы получаем 0 наборов результатов.
Я знаю, что вы можете добавить @params
в @language
, но (1) мне это не нужно (так как я просто получаю свой вводнепосредственно из некоторых баз данных) и (2), даже если я явно добавлю @params = N''
, я все равно получаю эту ошибку.
Если на самом деле делать что-то с помощью @params
и затем вызывать хранимую процедуру с аргументами coefficients_mu
,coefficients_sigma
и data_row
, тогда это технически решило бы мою проблему, но мне очень интересно знать, что вызывает эту ошибку.