@pola_pumpkin

Как обновить значения?

Привет, не могу обновить значения REF.
Видимо не до конца понимаю как UPDATE работает в ООБД.
Кто может подсказать в чем ошибка?

CREATE OR REPLACE TYPE T_STUDENT AS OBJECT(
    S_NUM   INT,
    S_UZV   VARCHAR2(30)
);

CREATE OR REPLACE TYPE T_PASN AS OBJECT(
    P_NUM   INT,
    P_UZV   VARCHAR2(30)
);

CREATE OR REPLACE TYPE S_ATS AS OBJECT(
    STUD_ATS REF T_STUDENT
);

CREATE OR REPLACE TYPE P_ATS AS OBJECT(
    PASN_ATS REF T_PASN
);

CREATE OR REPLACE TYPE K_STUD AS TABLE OF S_ATS;

CREATE OR REPLACE TYPE K_PASN AS TABLE OF P_ATS;

CREATE OR REPLACE TYPE O_STUDENT AS OBJECT(
    STUD T_STUDENT,
    PASN K_PASN
);

CREATE OR REPLACE TYPE O_PASN AS OBJECT(
    PASN T_PASN,
    STUD K_STUD
);

CREATE TABLE STUDENTI OF O_STUDENT
NESTED TABLE PASN STORE AS PASN_TBL;

CREATE TABLE PASNEDZEJI OF O_PASN
NESTED TABLE STUD STORE AS STUD_TBL;

-------------------------------------

INSERT INTO STUDENTI VALUES(T_STUDENT(58912, 'GUSEVS'), NULL);

INSERT INTO PASNEDZEJI VALUES(T_PASN(12, 'MILANOVSKIS'),NULL);

INSERT INTO PASNEDZEJI VALUES(T_PASN(13, 'GOMELEVS'), NULL);

SELECT REF(A) FROM PASNEDZEJI A WHERE A.PASN.P_NUM = 12; -- Для проверки

SELECT VALUE(A) FROM STUDENTI A WHERE A.STUD.S_NUM = 58912; -- Для проверки

UPDATE STUDENTI A SET A.PASN = (SELECT REF(A) FROM PASNEDZEJI A WHERE A.PASN.P_NUM = 12) WHERE A.STUD.S_NUM = 58912;


После UPDATE возникает такая ошибка:
UPDATE STUDENTI A SET A.PASN = (K_PASN((SELECT REF(A) FROM PASNEDZEJI A WHERE A.PASN.P_NUM = 12))) WHERE A.STUD.S_NUM = 58912
Error at Command Line : 51 Column : 52
Error report -
SQL Error: ORA-00932: несовместимые типы данных: ожидается USER.P_ATS, получено REF USER.O_PASN
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы