缺少右括号行1

时间:2020-07-30 07:15:03

标签: 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);

我收到以下错误

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

如何解决问题?

1 个答案:

答案 0 :(得分:3)

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

  • 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:它从引用表的主键列继承其数据类型。 NESTED TABLE子句是创建嵌套表列所必需的,它在问题中的缺位令人担忧。

已经像这样创建了表,发布的插入语句确实确实对ORA-00907: missing right parenthesis进行了卷曲。这是由于部门ID的集合:我们正在实例化类型,这意味着我们需要在VALUES子句中引用该集合:

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

我已经发布了a working demo on db<>fiddle here