기본적으로 레코드에 대한 참조를 만들고 싶습니다. 한 레코드 유형은 다른 레코드의 수퍼 유형입니다. 나는 약간 혼란 스럽다. 여기 PL/SQL에서 참조 만들기
내 유형이 있습니다insert into module_tab values(
'm001', 'physics'
);
I :
CREATE TABLE module_tab OF module_t(
moduleCode# PRIMARY KEY NOT NULL
);
CREATE TABLE course_tab OF course_t(
courseCode# PRIMARY KEY NOT NULL,
scope for (module1) is module_tab,
scope for (module2) is module_tab
);
나는 표준 모듈로 구성된 모듈 테이블에 레코드를 삽입 : 여기
CREATE OR REPLACE TYPE module_t AS OBJECT (
moduleCode# char(4),
moduleName char(10)
) NOT FINAL;
/
CREATE OR REPLACE TYPE specialised_module_t under module_t (
someSpecialAttribute char(10)
);
/
CREATE OR REPLACE TYPE course_t AS OBJECT (
courseCode# char(4),
module1 REF module_t,
module2 REF specialised_module_t
);
/
내 테이블입니다 특수 모듈로 구성된 모듈 테이블에 레코드를 삽입하십시오 :
나는 물론 테이블에서 코스 레코드를 생성 할 :
insert into module_tab
values(specialised_module_t(
'm002',
'physics',
'special'
)
);
여기에 까다로운 비트입니다. 이 기록에서 module1
속성은 모듈 m001
(첫 번째 모듈 기록)를 참조해야하고 module2
속성은 모듈에게 내가 이런 식으로 뭔가 보일 것 어쩌면 생각 m002
참조 할 필요가있다 :
INSERT into course_tab VALUES(
'c001',
SELECT REF(c) FROM module_tab c WHERE c.moduleCode# = 'm001',
SELECT REF(c) FROM module_tab c WHERE c.moduleCode# = 'm002'
)
이를 그냥 작동하지 않습니다 :(여기
오류 메시지입니다 :ERROR at line 3:
ORA-00936: missing expression
,846,510,403,210은 분명히 내 구문은 잘못된 것입니다,하지만 난 그것을 해결하는 방법을 모른다 : 나는이에 나이를 지출하고 난 그것을 알아낼 수 없습니다/
:(
도움이 많이 주시면 감사합니다 : D
감사합니다
UPDATE :
INSERT into course_tab VALUES(
'c001',
(SELECT REF(c) FROM module_tab c WHERE c.moduleCode# = 'm001'),
(SELECT treat(REF(c) as ref specialised_module_t) FROM module_tab c WHERE treat(values(c) as moduleCode).person# = 'm002')
);
하지만 지금은 오류 :
@a_horse_with_no_name의 도움으로 나의 새로운 코드가
ERROR at line 4:
ORA-00936: missing expression
도와주세요, 감사합니다 :)
"*이 동작하지 않습니다 *"유효한 Oracle 오류 메시지가 아닙니다. –
@a_horse_with_no_name 죄송합니다. 내 잘못입니다. 오류 메시지를 추가했습니다. 당신이 한 번 봐 주시면 정말 고맙겠습니다. 감사합니다 – dewijones92