Выполните хранимую процедуру и прочитайте значение параметра OUTPUT вместе с набором результатов.

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


person R Yoda    schedule 11.11.2017    source источник