You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ORA-00923错误求助:Oracle SQL语句FROM关键字位置异常排查

问题排查:ORA-00923: FROM keyword not found where expected

错误根源

从报错日志里的完整SQL语句可以定位问题:列别名使用了单引号包裹,这违反了Oracle的语法规则。

错误SQL片段:

select ROWNUM as 'rowNum', o.NAME as 'name', o.OWNER_ALIAS as 'ownerAlias' from ...

Oracle中,单引号仅用于定义字符串常量,不能用来包裹列别名。如果别名是合法标识符(无特殊字符、非关键字),可以直接省略引号;若需保留别名大小写或包含特殊字符,需用双引号替代单引号。

修正后的SQL

方式1:省略引号(推荐,无特殊需求时使用)

select ROWNUM as rowNum, o.NAME as name, o.OWNER_ALIAS as ownerAlias 
from MMONEY_SERVICE.EW_WALLET_OWNER o, 
     MMONEY_SERVICE.EW_AGENT a, 
     MMONEY_SERVICE.EW_WALLET_OWNER_CAT_TYPE t 
where o.OWNER_ID = a.AGENT_ID 
  and o.OWNER_TYPE_ID=1 
  and a.AGENT_LEVEL=1 
  and a.OWNER_CAT_ID=t.OWNER_CAT_ID 
  and t.CAT_CODE='MERCHANT' 
  and o.STATUS=1 
order by ROWNUM asc

方式2:使用双引号(需保留别名大小写时使用)

select ROWNUM as "rowNum", o.NAME as "name", o.OWNER_ALIAS as "ownerAlias" 
from MMONEY_SERVICE.EW_WALLET_OWNER o, 
     MMONEY_SERVICE.EW_AGENT a, 
     MMONEY_SERVICE.EW_WALLET_OWNER_CAT_TYPE t 
where o.OWNER_ID = a.AGENT_ID 
  and o.OWNER_TYPE_ID=1 
  and a.AGENT_LEVEL=1 
  and a.OWNER_CAT_ID=t.OWNER_CAT_ID 
  and t.CAT_CODE='MERCHANT' 
  and o.STATUS=1 
order by ROWNUM asc

额外优化建议

建议改用显式JOIN语法替代隐式逗号连接,提升SQL可读性和维护性:

select ROWNUM as rowNum, o.NAME as name, o.OWNER_ALIAS as ownerAlias 
from MMONEY_SERVICE.EW_WALLET_OWNER o
join MMONEY_SERVICE.EW_AGENT a on o.OWNER_ID = a.AGENT_ID
join MMONEY_SERVICE.EW_WALLET_OWNER_CAT_TYPE t on a.OWNER_CAT_ID = t.OWNER_CAT_ID
where o.OWNER_TYPE_ID=1 
  and a.AGENT_LEVEL=1 
  and t.CAT_CODE='MERCHANT' 
  and o.STATUS=1 
order by ROWNUM asc

内容的提问来源于stack exchange,提问作者Hashini Udara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:50:23