缺少右括号第 1 行

Posted

技术标签:

【中文标题】缺少右括号第 1 行【英文标题】:Missing right parenthesis line 1 【发布时间】:2020-07-30 07:15:03 【问题描述】:

我有以下代码

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:缺少右括号

如何解决问题?

【问题讨论】:

检查以下,它可能会提供解决方案:***.com/a/24587240/5143122 谢谢我纠正它现在它的工作 @AlexPoole - 没有必要为作为外键的列包含数据类型。看我的回答。 @APC - 这是我今天的(基本!?)课程,谢谢。我认为在这种情况下总是去PK;如果你引用不同的英国,那么你必须指定。但我会做一些阅读。 (我也没有意识到错误来自插入,哦...) @AlexPoole - 我更喜欢冗长的声明而不是最小的声明,但我喜欢继承数据类型的严谨性。 【参考方案1】:

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

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

【讨论】:

以上是关于缺少右括号第 1 行的主要内容,如果未能解决你的问题,请参考以下文章

第 10 行:错误:ORA-00907 缺少右括号 |甲骨文 11g

oracle apex 代码中缺少右括号

Makefile 错误:缺少右括号

ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号” *原因:*操作:行错误:44 列:30

在 oracle SQL 中使用 insrt 函数遇到“ORA-00907:缺少右括号”

从 DB2 移植到 ORACLE - ORA-00907:缺少右括号