为什么在使用嵌套查询时无法引用用户定义的类型字段?

时间:2008-11-05 20:33:37

标签: sql oracle types ora-00904

所以我的oracle数据库中有以下用户定义的类型:

CREATE OR REPLACE TYPE METRIC_IMPERIAL_DISTANCE AS OBJECT
(
  METERS_FEET INTEGER,
  CENTIMETERS_INCHES INTEGER,
  FRACTION NUMBER
)

我可以做以下事情:

SELECT t_id, get_distance_breakdown (h.height, h.unit_of_measure_id) height_breakdown
        FROM   heights h

甚至

SELECT t_id, get_distance_breakdown (h.height, h.unit_of_measure_id).meters_feet height_meters_feet
        FROM   heights h

但是以下因ORA-00904而失败:“HEIGHT_BREAKDOWN”。“METERS_FEET”:标识符无效错误:

SELECT t_id, height_breakdown.meters_feet
FROM   (SELECT t_id, get_distance_breakdown (h.height, h.unit_of_measure_id) height_breakdown
        FROM   heights h);

是什么给出的?如果没有一些简单而明显的解决办法,那么就会大量抽取oracle用户定义类型的大部分内容。我觉得我一定错过了什么。

1 个答案:

答案 0 :(得分:3)

我相信Oracle需要内联视图的别名:

SELECT v.t_id, v.height_breakdown.meters_feet
FROM   (SELECT t_id, get_distance_breakdown (h.height, h.unit_of_measure_id) height_breakdown
        FROM   heights h) v;