缺少右括号行 1

Missing right parenthesis line 1

我有以下代码

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

我收到以下错误

ERROR at line 1: ORA-00907: missing right parenthesis

如何解决问题?

这是一个基于几个假设的解决方案:

  • department1 是一个 SQL 嵌套 table 类型
  • division1 是一个带有主键
  • 的table

所以我们可以这样创建 table:

create table Department2 (
deptID number (15) primary key,
deptName char (45),
deptExt department1,
 DivisionID references division1)
       NESTED TABLE deptExt STORE AS deptExt_tab
 ; 

请注意,无需进一步定义 DivisionID:它从引用的 table 的主键列继承其数据类型。 NESTED TABLE 子句是创建嵌套 table 列所必需的,它在问题中的缺失令人不安。

像这样创建了 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