我需要检索信息,包括从分销商的地址,具有最高的销售价值:
CREATE OR REPLACE TYPE Distributor_address_ty AS OBJECT (
Street VARCHAR(20),
No VARCHAR(6),
City VARCHAR(15),
Postal_code VARCHAR(6),
Province VARCHAR(2));
CREATE OR REPLACE TYPE Distributor_ty AS OBJECT (
VAT VARCHAR(15),
Seq_No NUMBER,
Sold NUMBER,
Address Distributor_address_ty)
NOT FINAL;
我试过的是:
SELECT VAT, seq_no, sold,
DEREF(VALUE(d)).address.street AS Street,
DEREF(VALUE(d)).address.No AS Number,
DEREF(VALUE(d)).address.cut AS City,
DEREF(VALUE(d)).address.postal_code AS Postal Code,
DEREF(VALUE(d)).address.province AS Province
FROM (SELECT * FROM distributor d
ORDER BY sold DESC)
WHERE rownum = 1;
但返回错误:不一致的数据类型:期望的REF得到DB:_EXAM.Distributor_ty
建议?
1条答案
按热度按时间q3qa4bjr1#
1.表别名
d
是在子查询中定义的,而不是在外部查询中定义的。如果您尝试在外部查询中使用它,则它将是无效的标识符;1.您没有使用
REF
类型;NUMBER
是保留字,不能用作无引号标识符;和1.地址类型没有
cut
属性。在Oracle 12中,使用
FETCH FIRST ROW ONLY
,不要尝试取消引用地址:在早期版本中:
fiddle