获取“ORA-00907:缺少右括号”,找不到错误

Posted

技术标签:

【中文标题】获取“ORA-00907:缺少右括号”,找不到错误【英文标题】:Getting 'ORA-00907: missing right parenthesis', cannot find error 【发布时间】:2019-01-24 13:04:44 【问题描述】:

在 Oracle 中运行我的脚本后,我收到错误代码“ORA-00907:缺少右括号”。我已经创建了客户表和员工表,这两个表都运行正确并且添加了表。但是,我在创建“约会”表时遇到问题。创建它的代码如下:

create table Appointment
(appointment_num number(9) not null primary key,
appointment_time datetime(),
emp_ID number(4) not null references employee (emp_ID),
client_ID number(9) not null references client (client_ID))

无法找到错误所在,也无法在其他地方找到有关该问题的任何故障排除指南。任何帮助将不胜感激。

【问题讨论】:

什么是datetime() 【参考方案1】:

你有datetime(),把它改成date。请注意 datetime 在 oracle 上是无效的数据类型,您需要使用 datetimestamp

create table Appointment
(
  appointment_num number(9) not null primary key,
  appointment_time date,
  emp_ID number(4) not null references employee (emp_ID),
  client_ID number(9) not null references client (client_ID)
)

DateTimestamp 之间的区别

DATE 数据类型的一个主要问题是它无法足够精细地确定与另一个事件相关的哪个事件可能首先发生。 Oracle 扩展了 DATE 数据类型,并为我们提供了 TIMESTAMP 数据类型,它存储 DATE 数据类型存储的所有信息,但还包括小数秒。

Reference

【讨论】:

对不起它必须是日期而不是日期时间:) 日期可以,时间也可以用。 日期也包含时间。 如果您认为此答案有用,请考虑投票和/或将其标记为答案,以便社区也可以从中受益:) 谢谢 @G.Hines:Oracle 不支持单独的 DATETIMEDATETIME 类型。他们只有DATE,实际上是一个日期时间;它包含日期和时间。因此,午夜要么代表,嗯,午夜,要么根本没有时间(2018-01-24 = 2018-01-24 00:00:00)。 (他们有 TIMESTAMP 用于日期时间的秒数和可选时区。)

以上是关于获取“ORA-00907:缺少右括号”,找不到错误的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00907: 缺少右括号,可能是子查询有问题

ORA-00907: 缺少右括号 -- 奇怪

SQL 错误:ORA-00907:缺少右括号 00907。00000 -“缺少右括号”

错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号

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

错误:ORA-00907:oracle 缺少右括号