You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle继承类型查询:如何获取关联External_Company的Component_Code

修改查询语句以显示关联外部公司的Component_Code

已定义的对象类型与子类型

Create or replace type Component_ty as object (
   Code VARCHAR(10),
   Component_Description VARCHAR(100),
   Component_Type VARCHAR(10))
   NOT FINAL;

Create or replace type External_Component_ty under Component_ty(
   External_Company REF External_Company_ty);

External_Company_ty 定义

Create or replace type External_Company_ty as object (
   VAT VARCHAR(15),
   Company_Name VARCHAR(20),
   Component_code VARCHAR(5),
   Address External_Company_address_ty)
   NOT FINAL;

对应的表结构

create table Component of component_ty(
   Code Primary Key, 
   Component_Description NOT NULL,
   Component_Type NOT NULL);

create table External_Company of external_company_ty (
   VAT Primary Key,
   Company_Name NOT NULL,
   Component_Code NOT NULL,
   Address NOT NULL);

原查询语句

select c.*, treat(value(c) as external_component_ty).external_company as external_company FROM component c

修改后的查询语句

要新增一列显示关联外部公司的Component_Code,需要解析REF类型的External_Company属性,具体修改如下:

select 
    c.*,
    treat(value(c) as external_component_ty).external_company as external_company,
    deref(treat(value(c) as external_component_ty).external_company).component_code as company_component_code
from component c

关键说明

  • TREAT(value(c) as external_component_ty):将component表中的行转换为External_Component_ty子类型,从而访问其特有的External_Company属性。
  • DEREF(...):解析REF类型的对象引用,获取对应的External_Company_ty实体对象。
  • .component_code:从解析后的实体对象中提取目标字段,作为新增列返回。

内容的提问来源于stack exchange,提问作者mikerug88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:02:17