0
使用MonetDB.R
我想运行这个命令,但我不想打开mclient。有没有一种通用的方法来做到这一点?如何通过R将系统函数传递给monetdb?
create function div_noerror(l double, r double) returns double
使用MonetDB.R
我想运行这个命令,但我不想打开mclient。有没有一种通用的方法来做到这一点?如何通过R将系统函数传递给monetdb?
create function div_noerror(l double, r double) returns double
从汉纳斯的MonetDB.R
作者 -
你可以只是在你的数据库中创建它。如果它已经存在,这将失败,但你可以捕获该错误。所以
dbSendQuery(con, "create function div_noerror(l double, r double) returns double external name calc.div_noerror”) should work.
这里有一个稍长的使用例子:
# example of division
dbGetQuery(con , "SELECT 1/2 AS a")
# example of division by zero, which causes an error
dbGetQuery(con , "SELECT 1/0 AS a")
# load the `div_noerror` function through a system call
dbSendQuery(con , "CREATE FUNCTION div_noerror(l DOUBLE, r DOUBLE) RETURNS DOUBLE EXTERNAL NAME calc.div_noerror")
# use the div_noerror function instead of the `/` operator
dbGetQuery(con , "SELECT div_noerror(1 , 2) AS a")
# division by zero now returns a missing instead of crashing the entire query
dbGetQuery(con , "SELECT div_noerror(1 , 0) AS a")