查询在预期的地方找不到关键字错误 ora-00923

Posted

技术标签:

【中文标题】查询在预期的地方找不到关键字错误 ora-00923【英文标题】:Query giving error ora-00923 from keyword not found where expected 【发布时间】:2015-11-04 06:35:25 【问题描述】:

我正在使用 Oracle 8i。当我尝试在下面运行此脚本时,我收到错误 ora-00923 from keyword not found where expected.

请找到我正在使用的以下查询。

select i.siid, 
       sp.access_point_status, 
       csp.id_number, 
       act.entry_time, 
       act.addnl_info, 
       row_num() over (partition by i.siid order by act.entry_time desc)  act_row 
from  table_Service_point sp,
      table_case_to_service_point csp,
      table_case cs, 
      table_act_entry act, 
      (select distinct siid, 
              iopt.installedopts2axspoint
       from table_installed_options iopt, 
            tmp_efms_clarify inp 
       where iopt.siid = inp.service_instance 
         and iopt.siid = 'DSL580155-105-1') i 
where sp.objid = csp.case2servicepoint 
  and csp.id_number = cs.id_number 
  and cs.objid = act.act_entry2case 
  and sp.objid = i.installedopts2axspoint

【问题讨论】:

那个古老的 8i 版本的哪个确切版本?窗口函数(又名“分析函数”)是在 8.1 中添加的——它们在 8.0 中不可用(为什么你还在使用一个已经取消支持十多年的版本?) 【参考方案1】:

尝试使用 row_number() 而不是 row_num()。

【讨论】:

【参考方案2】:

oracle 中的单引号 '' 表示 characters,而不是 names

替换

iopt.siid='DSL580155-105-1'

iopt.siid="DSL580155-105-1"

【讨论】:

你怎么知道有一个名为"DSL580155-105-1"的列?另外:这对甲骨文来说没什么特别的。 SQL 标准定义了用单引号括起来的字符文字和用双引号括起来的标识符。【参考方案3】:

我确实认为row_number() 是正确的拼写,而不是row_num()。谷歌它以了解更多关于它是如何工作的。另外,提醒一下,DSL580155-105-1 真的是一个专栏吗?

【讨论】:

以上是关于查询在预期的地方找不到关键字错误 ora-00923的主要内容,如果未能解决你的问题,请参考以下文章

错误:ORA-00923:在预期的地方找不到 FROM 关键字

ORA-00923: 使用 shell 脚本在预期的地方找不到 FROM 关键字

在 Oracle SQL 中使用 CTE(ORA-00923:在预期的地方找不到 FROM 关键字)

为啥这个 SQL 会告诉我“在预期的地方找不到 FROM 关键字”?

从关键字定义,但我仍然得到错误

错误 - 未在预期位置找到关键字