小编典典

为什么此查询可在11g上运行时在10g上抛出ORA-00942?

sql

我在我的11g安装上执行此查询没有问题:

SELECT
    PRODUCT_INFOS_idm.FIELD_VALUE "mother_id",
    PRODUCT_INFOS_ep.FIELD_VALUE "product_thickness",
    COIL_INFOS.TIME_STAMP,
    COIL_INFOS.IN_THICKNESS,
    COIL_INFOS.MEASURED_LENGTH,
    COIL_INFOS.MEASURED_WIDTH,
    COIL_INFOS.PARAM_SET_TOP_SIDE,
    COIL_INFOS.PARAM_SET_BOTTOM_SIDE
FROM
    COIL_INFOS
INNER JOIN
    PRODUCT_INFOS PRODUCT_INFOS_idm
    on PRODUCT_INFOS_idm.COIL_ID_SYSTEM=COIL_INFOS.COIL_ID_SYSTEM
    and PRODUCT_INFOS_idm.TIME_STAMP=COIL_INFOS.TIME_STAMP
    and PRODUCT_INFOS_idm.FIELD_NAME='ID bobina'
INNER JOIN  
    PRODUCT_INFOS PRODUCT_INFOS_ep
    on PRODUCT_INFOS_ep.COIL_ID_SYSTEM=COIL_INFOS.COIL_ID_SYSTEM
    and PRODUCT_INFOS_ep.TIME_STAMP=COIL_INFOS.TIME_STAMP
    and PRODUCT_INFOS_ep.FIELD_NAME='Anchura'
WHERE
    (COIL_INFOS.COIL_ID_SYSTEM LIKE '14051800' OR COIL_INFOS.COIL_ID LIKE '14051800')

但是当我的客户(可能安装了10g的设备)执行它时,他得到了

ORA-00942: table or view does not exist

其他查询表明他具有相同的表和列。 以下查询执行没有问题:

select count(*) from COIL_INFOS
select count(*) from PRODUCT_INFOS

可能是什么问题?某个地方有语法错误吗?我怀疑Oracle版本有问题(我已经不得不删除通常用于列别名的“ as”)。Oracle 10g是否支持表别名?


阅读 204

收藏
2021-04-15

共1个答案

小编典典

正如Bob在评论中所暗示的那样,该问题是由于Oracle 10g的版本错误所致。

有几台服务器使用相同的架构和相同的查询,只有版本10.2.0.1.0的服务器才有问题。Oracle专家认为该错误在10.2.0.4上不存在,但我无权访问Oracle错误数据库。

由于对服务器打补丁对于我们的客户来说是毫无疑问的,因此我们最终通过为该查询创建视图来解决该错误。

TLDR:当Oracle说某个版本存在错误并且不应使用时,则不应使用它。

2021-04-15