2008-11-05 55 views
1

所以我在我的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的用户定义类型有用的东西。我觉得我一定会错过一些东西。

回答

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; 
+0

啊,是的,这做到了,非常感谢你 – 2008-11-05 20:51:35

相关问题