为啥在使用嵌套查询时不能引用用户定义的类型字段?
Posted
技术标签:
【中文标题】为啥在使用嵌套查询时不能引用用户定义的类型字段?【英文标题】:Why can't I reference a user defined type field when using nested queries?为什么在使用嵌套查询时不能引用用户定义的类型字段? 【发布时间】:2008-11-05 20:33:36 【问题描述】:所以我的 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】:我认为 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;
【讨论】:
以上是关于为啥在使用嵌套查询时不能引用用户定义的类型字段?的主要内容,如果未能解决你的问题,请参考以下文章