Почему я не могу ссылаться на поле определенного пользователем типа при использовании вложенных запросов?

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме