存储过程参数为R.

时间:2017-06-12 15:43:35

标签: sql-server r microsoft-r

我正在尝试使用传递给存储过程的参数在R-Services中运行一个简单的R和,但我不知道该怎么做,也找不到一个好的例子。这就是我到目前为止所做的:

var observer=new customObserver(document,false,function(observer,mutations){
  observer.disconnect();
  //som DOM changes
 observer.connect();
});
observer.connect();

我的问题是如何将存储过程中读取的变量(IF OBJECT_ID ( 'TEST', 'P' ) IS NOT NULL DROP PROCEDURE TEST; GO CREATE PROCEDURE TEST @a int = 0, @b int = 0 AS BEGIN EXEC sp_execute_external_script @language = N'R' ,@script = N'print(sum(@a, @b))' -- how to pass params here? ,@input_data_1 = N'@a' return @a + @b; END EXEC dbo.TEST @a = 2, @b = 3 GO @a)传递给R脚本?

3 个答案:

答案 0 :(得分:2)

考虑使用@params将SQL Server参数传递给R变量,如此MS docs所示。确保始终返回一个数据框对象,并将@input_data_1保留为需要传递到 InputDataSet 数据框对象中的R脚本的SQL Server查询(因此此处为空白)。

CREATE PROCEDURE myProc (@a int, @b int)
AS
    EXEC sp_execute_external_script    
      @language = N'R'    
    , @script = N' OutputDataSet <- data.frame(SumRes = sum(a_r, b_r));'    
    , @input_data_1 = N'   ;' 
    , @params = N' @a_r int, @b_r int'  
    , @a_r = @a
    , @b_r = @b
    WITH RESULT SETS (([SumResult] int NOT NULL)); 

然后调用程序:

EXEC dbo.myProc @a = 2, @b = 3

答案 1 :(得分:0)

在查询下方运行

EXEC dbo.TEST 2,  3

答案 2 :(得分:0)

Field1 <- 'fd'
Field2 <- '20'
query <- paste0(
  "exec df_test @Name = ", Field1, ", @ProductNumber = ", Field2, ""
)
sqlQuery(cn, query)
odbcClose(cn)

为r代码

执行这样的存储过程

快乐编码...... :)