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
相关产品推荐
相关产品推荐

