使用AS关键字时ORA-907缺少右括号 [英] ORA-907 missing right parenthesis when using AS keyword

查看:198
本文介绍了使用AS关键字时ORA-907缺少右括号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到带有以下sql语句的ORA-907.看来使用AS关键字存在问题. 当我删除AS关键字并在语句中使用完整的表名时,它会按预期工作.

I get a ORA-907 with the following sql statement. It looks like that there's a problem with using the AS keyword. When I remove the AS keyword and use complete tablenames in my statement it works as expected.

这是oracle的已知问题吗?它运行在11g上,需要更多详细信息时,我必须与管理员联系. 在版本<中,我发现了一些较旧的提示,指出存在错误. 11.

Is that a known issue with oracle? It's running on an 11g, when more details are needed I've to talk to my admin. I've found some older hints which state that there was a bug, in versions < 11.

SELECT easbwaredgs_t.id, easbwaredgs_t.fk_easbware_id, easbwaredgs_t.mandant, easbwaredgs_t.reg_code_mc,   
       easbwaredgs_t.hazard_code_ident, easbwaredgs_t.add_hazard_code, easbwaredgs_t.haz_code_version,   
       easbwaredgs_t.undg_number, easbwaredgs_t.ship_flashpoint, easbwaredgs_t.flashpoint_type,   
       easbwaredgs_t.cont_dopc, easbwaredgs_t.cont_dop, easbwaredgs_t.cont_phone, easbwaredgs_t.verpack_grp_mc,   
       easbwaredgs_t.ems_nr, easbwaredgs_t.trem_card_nr, easbwaredgs_t.secondimo, easbwaredgs_t.thirdimo,
       (
         SELECT COUNT(*)
         FROM easbwaredgs_t AS k
           LEFT OUTER JOIN easbdgstn_t AS p ON k.id = p.fk_easbwaredgsid
         WHERE k.mandant = '001'
           AND k.fk_easbware_id = 1
           AND p.type_mc = 'TRANSPORT_DGS_LIM_QUANT'
       ) AS cc_is_limited_quantities
FROM easbwaredgs_t
WHERE easbwaredgs_t.mandant = '001'
  AND easbwaredgs_t.fk_easbware_id = 1

推荐答案

您的问题是as.但是,我认为您的查询旨在成为一个相关的子查询.这应该写为:

Your problem is the as. However, I think your query is intended to be a correlated subquery. This should be written as:

SELECT e.id, e.fk_easbware_id, e.mandant, e.reg_code_mc,   
       e.hazard_code_ident, e.add_hazard_code, e.haz_code_version,   
       e.undg_number, e.ship_flashpoint, e.flashpoint_type,   
       e.cont_dopc, e.cont_dop, e.cont_phone, e.verpack_grp_mc,   
       e.ems_nr, e.trem_card_nr, e.secondimo, e.thirdimo,
       (SELECT COUNT(*)
         FROM easbdgstn_t p ON 
         WHERE e.id = p.fk_easbwaredgsid AND
               p.type_mc = 'TRANSPORT_DGS_LIM_QUANT'
       ) AS cc_is_limited_quantities
FROM easbwaredgs_t e
WHERE e.mandant = '001' AND
      e.fk_easbware_id = 1;

仅需说明:列别名允许(并且希望)为as.在Oracle中,表别名是不允许的.

Just to clarify: as is permitted (and desired) for column aliases. It is not allowed for table aliases in Oracle.

这篇关于使用AS关键字时ORA-907缺少右括号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆