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

PL/SQL中嵌套对象的company属性打印与更新方法咨询

打印嵌套对象的company属性及更新方法

没问题,针对你的需求,我分两部分来解答:

一、打印嵌套对象中的company属性

因为personwork是work_t类型的对象实例,你只需要通过链式访问(.操作符)就能获取它的company属性,和你访问personname的逻辑类似,只是多了一层对象调用。

完整的PL/SQL代码示例:

DECLARE
    per1 person_t;
BEGIN
    SELECT VALUE(e) INTO per1 FROM people e WHERE e.personnum = 12;
    -- 直接访问嵌套对象的company属性
    dbms_output.put_line('员工所在公司: ' || per1.personwork.company);
END;
/

执行这段代码后,就会输出George所在的公司(比如你插入的Google)。

二、更新嵌套对象中的company属性

更新嵌套属性有两种常用方式,根据你的场景选择:

方式1:先获取对象实例,修改后更新回表

适合需要对对象做多个属性修改,或者有复杂业务逻辑的场景:

DECLARE
    per1 person_t;
BEGIN
    -- 查询并锁定对象(FOR UPDATE避免并发问题)
    SELECT VALUE(e) INTO per1 FROM people e WHERE e.personnum = 12 FOR UPDATE;
    -- 修改嵌套对象的company属性
    per1.personwork.company := 'Alphabet';
    -- 将修改后的对象更新回表
    UPDATE people e SET VALUE(e) = per1 WHERE e.personnum = 12;
    -- 提交事务
    COMMIT;
    dbms_output.put_line('更新后的公司: ' || per1.personwork.company);
END;
/

方式2:直接用UPDATE语句修改嵌套属性

如果只是单独修改company这一个属性,这种方式更简洁高效,不需要先获取整个对象:

UPDATE people e
SET e.personwork.company = 'Microsoft'
WHERE e.personnum = 12;
COMMIT;

执行后,表中personnum为12的记录,其嵌套对象的company属性就会被更新为Microsoft。

小提示

你原来的类型定义中,VARCHAR2("50")和NUMBER("5")里的双引号是多余的,正确写法应该是VARCHAR2(50)、NUMBER(5),避免出现语法错误哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:41:37