我在我的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是否支持表别名?
正如Bob在评论中所暗示的那样,该问题是由于Oracle 10g的版本错误所致。
有几台服务器使用相同的架构和相同的查询,只有版本10.2.0.1.0的服务器才有问题。Oracle专家认为该错误在10.2.0.4上不存在,但我无权访问Oracle错误数据库。
由于对服务器打补丁对于我们的客户来说是毫无疑问的,因此我们最终通过为该查询创建视图来解决该错误。
TLDR:当Oracle说某个版本存在错误并且不应使用时,则不应使用它。