sql-server - R 的存储过程参数

标签 sql-server r microsoft-r

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

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@b)传递给 R 脚本?

最佳答案

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

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

关于sql-server - R 的存储过程参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44503534/

相关文章:

r - R 中的 ODBC 连接与 Azure Active Directory 密码身份验证

r - 如何获取最新的 RStudio 版本

r - 如何在 DEoptim (R) 中使用 "fnmap"设置整数约束

java - Java8 Hibernate5.2 的日期问题

c# - 需求变更 : Use database table instead of enums. 如何处理使用枚举值的现有记录?

python - 如何在Python Docker镜像中安装MSSQL Server?

c++ - 如何声明 Rcpp 函数的输入?

package - 将依赖于 RcppEigen 的 R 包与 Microsoft R Open 中的 MKL 链接

r - Microsoft rxOneClassSVM 的预测分数意味着什么?

r - SQL 2016 与 R - 错误 HRESULT 0x80004004