Oracle 8i SQL 命令未正确结束
Posted
技术标签:
【中文标题】Oracle 8i SQL 命令未正确结束【英文标题】:Oracle 8i SQL command not properly ended 【发布时间】:2016-06-17 14:34:31 【问题描述】:在下面的 SQL 语句中,我传递 ROUTER_ID 并期望返回最新版本的 RTR_HEADER 记录以及相关的 RTR_SEQUENCE。
SELECT
RH.ROUTER_ID,
RH.DESCRIPTION,
RSEQ.SEQUENCE_NUMBER
FROM
CFG.RTR_SEQUENCE RSEQ
INNER JOIN CFG.RTR_HEADER RH
ON RSEQ.ROUTER_ID = RH.ROUTER_ID
AND RSEQ.ROUTER_REV = RH.ROUTER_REV
WHERE
RH.ROUTER_REV = (SELECT MAX(RVER.ROUTER_REV) FROM CFG.RTR_HEADER RVER WHERE RVER.ROUTER_ID = RH.ROUTER_ID)
AND RH.ROUTER_ID = 'XXXXX-XXX'
ORDER BY RH.ROUTER_ID, RSEQ.SEQUENCE_NUMBER
我不断收到 SQL 命令未正确结束,智能指向 INNER JOIN。如果我省略了 INNER JOIN 及其相关的表和字段,SQL 语句就会运行。我确实得到了 RTR_HEADER 记录的最新版本,但我也需要匹配的 RTR_HEADER。我在这里查看了许多其他关于 SO 的现有答案,考虑了他们的解决方案,但没有任何结果。
【问题讨论】:
语法看起来不错。我假设 ROUTER_ID 是字符串而不是数字。 正确。一个字符串值。 您确定您不在 8i 中或正在检查 8i 的语法。用逗号替换内连接,并将 ON 后的条件移到 where 子句中。 您确定 Oracle 9 支持JOIN
运算符吗?我认为 Oracle 10 中添加了对此的支持,但我可能弄错了?
*哎哟!它的甲骨文 8i。对不起。既然是 8i,那么命令应该如何构造?
【参考方案1】:
SELECT
RH.ROUTER_ID,
RH.DESCRIPTION,
RSEQ.SEQUENCE_NUMBER
FROM
CFG.RTR_SEQUENCE RSEQ,CFG.RTR_HEADER RH
WHERE RSEQ.ROUTER_ID = RH.ROUTER_ID
AND RSEQ.ROUTER_REV = RH.ROUTER_REV
AND RH.ROUTER_REV = (SELECT MAX(RVER.ROUTER_REV) FROM CFG.RTR_HEADER RVER WHERE RVER.ROUTER_ID = RH.ROUTER_ID)
AND RH.ROUTER_ID = 'XXXXX-XXX'
ORDER BY RH.ROUTER_ID, RSEQ.SEQUENCE_NUMBER
【讨论】:
@GeovaniMartinez 有关左右旧语法,请参见此处asktom.oracle.com/pls/asktom/…以上是关于Oracle 8i SQL 命令未正确结束的主要内容,如果未能解决你的问题,请参考以下文章
oracle 问题 ORA-00933: SQL 命令未正确结束 如何解决?
oracle mybatis一次执行多条sql,提示SQL命令未正确结束