В моем приложении есть пользователи (и кандидат подтипа) и задания, при этом заявители могут подавать заявки на работу. У меня есть типы объектов и таблицы настройки, как показано ниже:Обновить таблицу с вложенной таблицей
create or replace type user_typ as object(
user_id number(19,0),
username nvarchar2(40 char)
)NOT FINAL;
Я унаследовать applicant_typ от этого:
create or replace type applicant_typ under user_typ (
resume_text nclob
);
Мой дизайн включает в себя рабочие места, к которым можно применить заявителей. Для этого я создаю application_typ следующим образом:
create or replace TYPE Application_typ AS OBJECT (
application_id NUMBER,
candidate applicant_typ,
time_of_app DATE
);
CREATE TYPE Application_tab IS TABLE OF Application_typ;
А теперь я создаю тип объекта под названием Job_typ, и таблицу, содержащую эти объекты, в котором есть вложенная таблица для приложений:
CREATE OR REPLACE TYPE Job_typ AS OBJECT (
job_ID NUMBER,
description NVARCHAR2(1000),
name NVARCHAR2(200),
application Application_tab
);
CREATE TABLE Job_tab OF Job_typ
NESTED TABLE application STORE AS application_nt;
Все это отлично работает. Я вставил несколько заданий в таблицу job_tab следующим образом:
INSERT INTO job_tab VALUES (1, 'The Software Developer will be responsible for authoring high-quality software...',
'Software Developer', NULL);
INSERT INTO job_tab VALUES (2, 'This position requires a team player and a self-starter with experience leading... ',
'Project Manager', NULL);
INSERT INTO job_tab VALUES (3, 'In the first year of this unique 24-month program, you rotate through various...',
'Store Manager', NULL);
Обратите внимание, что в данный момент вложенный атрибут «приложение» таблицы имеет нулевое значение для всех заданий. Предположим, что у меня уже есть некоторые заявители в таблице, называемой request_table, которые имеют тип request_typ. Как создать и вставить новое приложение для задания?
Я попробовал некоторые вещи, как:
UPDATE job_tab
SET application = application_typ (
1,
Applicant_typ(SELECT VALUE(a) from applicant_table a where user_id=1),
'12-MAY-2014')
WHERE job_id=1
Но это не работает.
Спасибо! Не могли бы вы объяснить, что означает «select t.a app_typ»? К чему относятся t.a и app_typ? Боюсь, я не очень разбираюсь в SQL. – ubuntunoob
't' - это псевдоним' request_table', 't.a', означающий столбец' a' из 'subscription_table', который я называю' app_typ' для будущих ссылок ('s.app_typ'). – mikron