将ref值插入对象表

时间:2014-10-15 19:51:23

标签: sql oracle

我上大学的任务,而且我在插入一个插页时遇到了麻烦。 我创建了一个名为memeber的对象

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;

然后我必须创建一个名为project的对象,如下所示

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

我必须创建一个类型为project的对象表并将其更改

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

请问有人能为我解释一下语法吗?

1 个答案:

答案 0 :(得分: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');