Я хочу выполнить хранимую процедуру на (Microsoft) SQL Server (2012) с параметром OUTPUT
и хочу прочитать набор результатов, а также выходные значения (значения) обратно в R.
Есть ли способ
- получить значение параметра OUTPUT
- и при этом (без повторного выполнения хранимой процедуры) еще и
- получить результирующий набор хранимой процедуры?
Пример моего текущего обходного пути (с использованием RODBCext
вместо RODBC
для предотвращения внедрения кода SQL):
-- example stored procedure
CREATE PROCEDURE output_test
@ID INT,
@result INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
SELECT @result = 42 -- OUTPUT parameter
-- FROM whateveryouwant
-- WHERE ID = @ID
SELECT * FROM anothertable WHERE ID = @ID -- result set
END
Обходной путь в R с использованием RODBCext
(также будет работать с RODBC
, если я вставлю идентификатор в строку запроса sql
):
library(RODBCext)
con <- odbcConnect("TEST_DATABASE")
# first query to get the OUTPUT parameter
sql <- "DECLARE @result_output INT;
EXECUTE output_test @ID = ?, @result = @result_output OUTPUT;
SELECT @result_output AS result"
result <- RODBCext::sqlExecute(con, query = sql, data = list(ID = 100), fetch = TRUE)
# second query to get the result set
sql2 <- "EXECUTE output_test @ID = ?, @result = @result_output OUTPUT;"
resultset <- RODBCext::sqlExecute(con, query = sql2, data = list(ID = 100), fetch = TRUE)
odbcClose(con)
PS: здесь есть связанные вопросы, которые не дают полного решения моего вопроса, например. грамм.: