Почему я не могу ссылаться на поле определенного пользователем типа при использовании вложенных запросов? - PullRequest
1 голос
/ 05 ноября 2008

Итак, в моей базе данных 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 Ответ

3 голосов
/ 05 ноября 2008

Я считаю, что 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;
...