Database 缺少右括号第1行

Database 缺少右括号第1行,database,oracle,user-defined-types,Database,Oracle,User Defined Types,我有以下代码 create table Department2 ( 2 deptID number (15) primary key, 3 deptName char (45), 4 deptExt department1, 5 DivisionID references division1); insert into department2 values (311, 'IT', (69193929489, 27222844821, 17897532567), 211

我有以下代码

create table Department2 (
  2  deptID number (15) primary key,
  3  deptName char (45),
  4  deptExt department1,
  5  DivisionID references division1); 

insert into department2 values (311, 'IT', (69193929489, 27222844821, 17897532567), 211);
我得到以下错误

第1行错误:ORA-00907:缺少右括号


如何解决问题?

以下是一个基于两个假设的解决方案:

department1是SQL嵌套表类型 division1是一个具有主键的表 因此,我们可以创建如下表:

create table Department2 (
deptID number (15) primary key,
deptName char (45),
deptExt department1,
 DivisionID references division1)
       NESTED TABLE deptExt STORE AS deptExt_tab
 ; 
请注意,无需进一步定义DivisionID:它从引用表的主键列继承其数据类型。创建嵌套表列需要嵌套表子句,问题中没有嵌套表子句会带来麻烦

创建了这样的表之后,发布的insert语句确实抛出了ORA-00907:缺少右括号。这是由于部门ID的集合:我们正在实例化一个类型,这意味着我们需要在VALUES子句中引用集合:

insert into department2 
values (311, 'IT', department1(69193929489, 27222844821, 17897532567), 211);

我已经发布了一个基于两个假设的解决方案:

department1是SQL嵌套表类型 division1是一个具有主键的表 因此,我们可以创建如下表:

create table Department2 (
deptID number (15) primary key,
deptName char (45),
deptExt department1,
 DivisionID references division1)
       NESTED TABLE deptExt STORE AS deptExt_tab
 ; 
请注意,无需进一步定义DivisionID:它从引用表的主键列继承其数据类型。创建嵌套表列需要嵌套表子句,问题中没有嵌套表子句会带来麻烦

创建了这样的表之后,发布的insert语句确实抛出了ORA-00907:缺少右括号。这是由于部门ID的集合:我们正在实例化一个类型,这意味着我们需要在VALUES子句中引用集合:

insert into department2 
values (311, 'IT', department1(69193929489, 27222844821, 17897532567), 211);

我已经发布了

检查以下内容,它可能会提供一个解决方案:谢谢,我现在更正了它working@AlexPoole-不必为作为外键的列包含数据类型。看看我的答案。@APC-这是我的基本要求!?今天的课,谢谢。我假设在这种情况下,总是去PK;如果你参考了不同的英国,那么你必须指定。但我会读一些书。我还没有意识到错误来自插入,d'oh…@AlexPoole-我更喜欢详细声明而不是最小声明,但我喜欢严格继承数据类型。检查以下内容,它可能会提供一个解决方案:谢谢,我现在更正了它working@AlexPoole-不必为作为外键的列包含数据类型。看看我的答案。@APC-这是我的基本要求!?今天的课,谢谢。我假设在这种情况下,总是去PK;如果你参考了不同的英国,那么你必须指定。但我会读一些书。我还没有意识到错误来自插入,d'oh…@AlexPoole-我更喜欢详细声明而不是最小声明,但我喜欢继承数据类型的严格性。