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);

何を与える?これに対する単純で明白な回避策がない場合、それはオラクルのユーザー定義型について役立つものの多くを台無しにします。何かが足りない気がします。

4

1 に答える 1

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;
于 2008-11-05T20:45:23.580 に答える