Реализация R в SQL вызывает ошибку параметра - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь запустить код 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, тогда это технически решило бы мою проблему, но мне очень интересно знать, что вызывает эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...