Как обновить значения атрибутов подтипа в базе данных Oracle? - PullRequest
0 голосов
/ 27 мая 2019

Как обновить значение столбца подтипа?

Код, подобный этому, не может получить доступ к атрибуту оценки учащегося:

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'));

Как я могу изменить оценку учащегося на «окончил»?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Я нашел ответ на мою проблему.
Это код для обновления атрибутов подтипа:

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;
0 голосов
/ 27 мая 2019

это должно работать

update persons s set VALUE(s) = student(treat(value(s) as student).name, 'graduated');
...