使用AS关键字时ORA-907缺少右括号 [英] ORA-907 missing right parenthesis when using AS keyword
问题描述
我得到带有以下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屋!