2014-10-15 2 views
1

У меня есть задание для колледжа, и у меня проблемы с выполнением одной из моих вставок. Я создал объект под названием memeberВставка значения ref в таблицу объектов

CREATE TYPE memeber AS OBJECT 
(
    member_id INTEGER, 
    member_name VARCHAR(30), 
    member_jobtitle VARCHAR(30), 
    member_skills skills_list, 
    past_projects past_projects_NTT 
) 

Затем я создал эту таблицу объектов

CREATE TABLE project_resources of MEMEBER 
(
    MEMBER_ID PRIMARY KEY, 
    MEMBER_NAME NOT NULL 
)NESTED TABLE past_projects STORE AS PROJ_EXT; 

Тогда я должен был создать объект, называемый проект следующим образом

CREATE TYPE project as OBJECT 
(
    PROJECT_ID INTEGER, 
    PROJECT_ASSIGNED_MEMBER REF MEMEBER, 
    PROJECT_TITLE VARCHAR2(30) 
); 

мне пришлось создать объектная таблица проекта типа и его изменение

CREATE TABLE PROJECT_TABLE OF PROJECT; 

ALTER TABLE PROJECT_TABLE ADD PRIMARY KEY(PROJECT_ID); 

ALTER TABLE PROJECT_TABLE ADD (CONSTRAINT NULL_CHK CHECK(PROJECT_TITLE IS NOT NULL); 

Нет, здесь я начинаю испытывать проблемы. Мне было показано, как вставлять значения в таблицу, когда все значения имеют тип ref, но когда я включаю другие типы, я не уверен в синтаксисе.

Это была моя попытка:

INSERT INTO PROJECT_TABLE 
SELECT 1, REF(M) 
FROM MEMEBER M 
WHERE M.MEMBER_ID =1, 'KING KONG'; 

Может кто-нибудь пролить некоторый свет на синтаксис для меня, пожалуйста?

+0

Какую базу данных вы используете? Это Oracle? – jpw

+0

Я использую Oracle, извините, должен был отметить это. – Johntk

+1

Только опечатка, на которую я думаю: 'SELECT 1, REF (M), 'KING KONG' FROM ...' (вы по ошибке ставите 'KING KONG'' в дальнем конце запроса). –

ответ

0

После еще некоторых исследований я нашел решение:

INSERT INTO PROJECT_TABLE 
(PROJECT_ID, 
PROJECT_ASSIGNED_MEMBER, 
PROJECT_TITLE)VALUES(
2, 
(SELECT REF(M) FROM project_resources M WHERE M.member_id = 2), 
'Bomb'); 
Смежные вопросы