【发布时间】:2014-07-09 19:34:58
【问题描述】:
我正在尝试使用 R 中的 RODBC 在 Oracle SQL 数据库上执行一个简单的“if/then”语句。该 SQL 语句在 SQL Developer v4.0.2.15 中运行良好,但在执行相同的语句时会引发错误回复
sqlQuery(channel, "
select
Variable1,
Variable2,
CASE WHEN Variable1 = 0 then 0 else 1 end as Var3
from schema.TABLE
where ROWNUM<100;
"
)
错误信息(更新):
[1] "[1] "HY000 936 [Oracle][ODBC][Ora]ORA-00936: missing expression\n"
[2] "[2] ...
删除 CASE WHEN 行时该语句工作正常,因此错误必须在 CASE WHEN 语法中。
【问题讨论】:
-
没关系。评论已撤销。
-
除了错误消息中的查询与您发布的内容不匹配之外,错误本身也不是您在标题中输入的内容。您能否验证问题中的代码和错误是否同步? (我希望“无效字符”最后是分号,但不确定 RODBC 是否会像 JDBC 那样介意)。
-
Alex P - 我已经更正了错误信息
-
尝试使用 DECODE(Variable1,0,0,1) 代替 case 语句。
-
解码确实有效,谢谢!您还可以链接 if/else 语句,以便它很好地处理流程控制:SELECT supplier_name, DECODE(supplier_id, 10000, 'IBM', 10001, 'Microsoft', 10002, 'Hewlett Packard', 'Gateway') result FROM providers;
标签: sql r oracle oracle-sqldeveloper rodbc