首页 > 解决方案 > 如何更新 oracle 数据库中的子类型属性值?

问题描述

如何更新子类型的列值?

像这样的代码无法访问学生的成绩属性:

update persons set grade = 'graduated';
CREATE OR REPLACE TYPE person (
    name varchar2(20),
    age number,
    address varchar2(20)
) NOT FINAL;

CREATE OR REPLACE TYPE student UNDER person (
    grade varchar2(20)
) NOT FINAL;

CREATE TABLE persons OF person;

INSERT INTO persons VALUES (student('Jon', 'undergraduate'));

如何将学生成绩更改为“已毕业”?

标签: databaseoracleplsqlobject-relational-model

解决方案


我找到了我的问题的答案。
这是更新子类型属性的代码:

DECLARE
    s student;

BEGIN
    select treat(value(p) as student) into s from persons p where name = 'Jon';
    s.grade = 'graduated';
    update persons p set value(p) = s where name = 'Jon';
END;

推荐阅读