【问题标题】:R writing a function to extract data from an Oracle databaseR编写一个从Oracle数据库中提取数据的函数
【发布时间】:2018-01-31 14:44:14
【问题描述】:

我正在尝试在 R 中编写一个函数,该函数接受输入并将其添加到预定义的 SQL 查询中。这是为了避免每次输入更改时都重写相同的查询,而是使用该函数。

但是我在函数的语法上有问题。

函数

该函数将input 作为唯一ID,并返回一个站点名称。

library(RODBC)

con= odbcConnect(dsn = "DB", uid="morp101", pwd="abcdxyz1234",rows_at_time=500)

getsitename=function(input) {

sitename=sqlQuery(con,"Select DISTINCT(SITE_NAME) FROM SITE_TABLE 
                    WHERE SITE_CODE = '&input&'")
return(sitename)

}

上述函数在测试时应给出以下输出

getsitename(1011APQ)

结果:麦迪逊湾

但是语法错误,不知道如何正确连接input

我们将不胜感激任何建议。并为缺乏可重复的数据而道歉,我不确定我如何才能为这个问题获得它。

【问题讨论】:

    标签: r oracle rodbc


    【解决方案1】:

    您可以使用paste0() 创建您的查询:

    getsitename=function(input) {
      query = paste0("Select DISTINCT(SITE_NAME) FROM SITE_TABLE WHERE SITE_CODE = '", input, "'")
      sitename=sqlQuery(con,query)
      return(sitename)
    }
    

    所以当input='1234'时,paste0()语句返回

    "Select DISTINCT(SITE_NAME) FROM SITE_TABLE WHERE SITE_CODE = '1234'"
    

    【讨论】:

    • 当我将 paste0() 包装到一个函数中时,我收到以下错误消息:名称错误(帧)[名称(帧)==“x”]
    • 在您的环境中有任何名为names 的变量或函数吗?见here
    • 我关闭了RStudio IDE中与该功能对应的选项卡,它工作了。奇怪的!感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2019-01-21
    • 1970-01-01
    相关资源
    最近更新 更多