CREATE TABLE语句中的错误ORA-00906

时间:2014-03-15 20:14:01

标签: sql oracle

我在以下代码中收到错误ORA-00906: missing left parenthesis

create table "employee_copy" (
   employee_id number(10), 
   first_name VARCHAR2, 
   last_name VARCHAR2, 
   email VARCHAR2, 
   phone_number VARCHAR2, 
   hire_date date, 
   job_id VARCHAR2, 
   salary number(10), 
   commission_pct number(3,3), 
   manager_id number(10),
   department_id number(10)
)

为什么我会收到此错误?

3 个答案:

答案 0 :(得分:3)

错误消息是:

ORA-00906: missing left parenthesis

原因是:VARCHAR2需要一个长度参数来定义最大列长度,例如

 first_name VARCHAR2(100), 

答案 1 :(得分:2)

VARCHAR2类型需要长度参数:

CREATE TABLE "employee_copy" (
   employee_id    NUMBER(10), 
   first_name     VARCHAR2(50), 
   last_name      VARCHAR2(50), 
   email          VARCHAR2(50), 
   phone_number   VARCHAR2(50), 
   hire_date      DATE, 
   job_id         VARCHAR2(50), 
   salary         NUMBER(10), 
   commission_pct NUMBER(3,3), 
   manager_id     NUMBER(10),
   department_id  NUMBER(10)
)

另外,格式化语句会大大增强其可读性。

答案 2 :(得分:-1)

表命名如“employee_copy”不是相关方法,因为您使用引用的小写表名。 考虑默认情况下Oracle使用大写标识符处理标识符。 因此,如果您使用小写或混合大小写+引用,Oracle将忽略相同的名称而不引用:

SQL> create table "employee_copy" (x int);

Таблица создана.

SQL> select * from employee_copy;
select * from employee_copy
              *
Error at line 1:
ORA-00942: table or view does not exist

SQL> select * from  "employee_copy";

No rows selected