Sql ORA-00907:ORACLE 10G中缺少右括号

Sql ORA-00907:ORACLE 10G中缺少右括号,sql,oracle,runtime-error,oracle10g,Sql,Oracle,Runtime Error,Oracle10g,我正在创建一个表,但是它一直给我错误 ORA-00907:缺少右括号 我的代码: 创建表EMP( ENO CHAR(3)非空主键, ENAME VARCHAR(50)不为空, 作业类型VARCHAR(50)不为空, 管理器字符(3)默认为空, 雇用日期不为空, DNO整数(11)不为空, 佣金小数(10,2)默认为空, 工资小数点(7,2)不为空, 约束DNO外键(DNO)引用部门(DNO), 约束管理器外键(管理器)引用EMP(ENO) ); 删除整数的大小(DNO列): 删除整数的大小(DN

我正在创建一个表,但是它一直给我错误

ORA-00907:缺少右括号

我的代码:

创建表EMP(
ENO CHAR(3)非空主键,
ENAME VARCHAR(50)不为空,
作业类型VARCHAR(50)不为空,
管理器字符(3)默认为空,
雇用日期不为空,
DNO整数(11)不为空,
佣金小数(10,2)默认为空,
工资小数点(7,2)不为空,
约束DNO外键(DNO)引用部门(DNO),
约束管理器外键(管理器)引用EMP(ENO)
);
删除整数的大小(
DNO
列):

删除整数的大小(
DNO
列):


如果这个答案对你有效,那么你应该接受它,这样这个问题就被标记为已解决。诊断是正确的,但在我看来,治疗不是最好的。如果OP有充分的理由将整数的大小限制为11位,那么更好的选择不是使用
integer
(不限制大小),而是使用
number(11,0)
@mathguy。在MySQL中(它支持语法,可能是造成混淆的原因),
int(11)
没有指定存储的位数。它只是指定值的显示宽度。如果答案对您有效,您应该接受答案,以便将此问题标记为已解决。诊断是正确的,但在我看来,治疗方法不是最好的。如果OP有充分的理由将整数的大小限制为11位,那么更好的选择不是使用
integer
(不限制大小),而是使用
number(11,0)
@mathguy。在MySQL中(它支持语法,可能是造成混淆的原因),
int(11)
没有指定存储的位数。它只是指定值的显示宽度。如果可以的话,有几点建议:
char(n)
很少需要或有用;您会发现
varchar2(n)
几乎总是更好。然后:在Oracle世界中,使用
varchar2(n)
比使用
varchar(n)
要好得多-最好不要问为什么。对于数字,最好学习使用Oracle标准数据类型
number(m,n)
。用
number(11,0)
代替
integer(11)
,用
number(7,2)
代替
decimal(7,2)
,等等。我还看到在这个问题上有两个反对票。糟糕的是,那些否决了一个完全正确的问题的猴子们觉得没有必要表达他们的反对意见。也许这个问题太基本了,也许他们想让你“阅读文档”,不管怎样——至少留下一个他们认为错误的注释,这样其他人就可以对他们的反对意见发表意见。不要气馁;你可以在这个网站上得到的帮助将远远弥补你不得不忍受的烦恼。谢谢你的建议。如果可以的话,我有几点建议:
char(n)
很少需要或有帮助;您会发现
varchar2(n)
几乎总是更好。然后:在Oracle世界中,使用
varchar2(n)
比使用
varchar(n)
要好得多-最好不要问为什么。对于数字,最好学习使用Oracle标准数据类型
number(m,n)
。用
number(11,0)
代替
integer(11)
,用
number(7,2)
代替
decimal(7,2)
,等等。我还看到在这个问题上有两个反对票。糟糕的是,那些否决了一个完全正确的问题的猴子们觉得没有必要表达他们的反对意见。也许这个问题太基本了,也许他们想让你“阅读文档”,不管怎样——至少留下一个他们认为错误的注释,这样其他人就可以对他们的反对意见发表意见。不要气馁;你在这个网站上得到的帮助将不仅仅是弥补你不得不忍受的烦恼。谢谢你的建议。
SQL> select * from v$version where rownum = 1;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi

SQL> CREATE TABLE EMP
  2  (
  3     ENO         CHAR (3) NOT NULL PRIMARY KEY,
  4     ENAME       VARCHAR (50) NOT NULL,
  5     JOB_TYPE    VARCHAR (50) NOT NULL,
  6     MANAGER     CHAR (3) DEFAULT NULL,
  7     HIRE_DATE   DATE NOT NULL,
  8     DNO         INTEGER NOT NULL,
  9     COMMISSION  DECIMAL (10, 2) DEFAULT NULL,
 10     SALARY      DECIMAL (7, 2) NOT NULL,
 11     CONSTRAINT DNO FOREIGN KEY (DNO) REFERENCES DEPARTMENTS (DNO),
 12     CONSTRAINT MANAGER FOREIGN KEY (MANAGER) REFERENCES EMP (ENO)
 13  );

Table created.

SQL>