Итак, в моей базе данных 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. Я чувствую, что, должно быть, что-то упустил.