R 的存储过程参数
Stored procedure parameters to R
我正在尝试 运行 使用传递给存储过程的参数在 R-Services 中进行简单的 R 求和,但我不知道该怎么做,也找不到好的示例。这是我目前所拥有的:
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脚本?
运行 下面查询
EXEC dbo.TEST 2, 3
考虑使用 @params
将 SQL 服务器参数传递给 R 变量,如此 MS docs 所示。确保始终 return 一个数据框对象,并为 SQL 服务器查询留下 @input_data_1
,您需要在 InputDataSet 数据框对象中传递到 R 脚本(因此这里是空白的)。
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
Field1 <- 'fd'
Field2 <- '20'
query <- paste0(
"exec df_test @Name = ", Field1, ", @ProductNumber = ", Field2, ""
)
sqlQuery(cn, query)
odbcClose(cn)
像这样为 r 代码执行存储过程
快乐编码...:)
我正在尝试 运行 使用传递给存储过程的参数在 R-Services 中进行简单的 R 求和,但我不知道该怎么做,也找不到好的示例。这是我目前所拥有的:
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脚本?
运行 下面查询
EXEC dbo.TEST 2, 3
考虑使用 @params
将 SQL 服务器参数传递给 R 变量,如此 MS docs 所示。确保始终 return 一个数据框对象,并为 SQL 服务器查询留下 @input_data_1
,您需要在 InputDataSet 数据框对象中传递到 R 脚本(因此这里是空白的)。
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
Field1 <- 'fd'
Field2 <- '20'
query <- paste0(
"exec df_test @Name = ", Field1, ", @ProductNumber = ", Field2, ""
)
sqlQuery(cn, query)
odbcClose(cn)
像这样为 r 代码执行存储过程
快乐编码...:)