执行存储过程并将OUTPUT参数值与结果集一起读取

时间:2017-11-11 16:36:14

标签: r stored-procedures rodbc r-dbi

我想在具有OUTPUT参数的(Microsoft)SQL Server(2012)上执行存储过程,并希望将结果集以及输出值读回到R. / p>

有没有办法

  • 获取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  

使用RODBCext在R中解决问题(如果我将ID粘贴到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:这里有相关的问题没有提供我问题的完整解决方案,例如: G:

0 个答案:

没有答案