缺少右括号第 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
ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号” *原因:*操作:行错误:44 列:30