2008-11-05 57 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

相關問題