【问题标题】:Error ORA-00906 in CREATE TABLE statement [closed]CREATE TABLE 语句中的错误 ORA-00906 [关闭]
【发布时间】:2014-04-21 04:08:43
【问题描述】:

我在以下代码中收到错误 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)
)

为什么会出现这个错误?

【问题讨论】:

  • edit你的问题a)在标题中包含相关信息(“这里的代码有什么问题”对于本网站的未来用户在a中看到它绝对没有任何意义搜索结果,它没有说明您遇到的问题),并且 b)解释您在发布的内容中遇到的问题。你得到什么错误信息?它在什么方面是“错误的”?如果您需要帮助,请将您面前的信息告诉我们。您要求我们提供免费帮助来解决您的问题,因此您应该让我们尽可能轻松地为您提供帮助。
  • 作为旁注 - 引用标识符,如 "employee_copy" 是一个非常糟糕的主意。是的,这允许数据库具有混合或小写的名称 - 但是由于 Oracle 将不带引号的名称设置为 UPPER_CASE 即使以小写形式给出,所以在创建表时使用引号意味着引用此的每段代码表将永远永远必须引用名称。这会导致混乱、误解和烦恼。别。只是,不要。分享和享受。

标签: sql oracle


【解决方案1】:

错误信息是:

ORA-00906: missing left parenthesis

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

 first_name VARCHAR2(100), 

【讨论】:

    【解决方案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)
    )
    

    此外,格式化语句可以大大提高其可读性。

    【讨论】:

      【解决方案3】:

      像“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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-06
        • 2012-07-08
        • 2021-07-29
        • 2012-05-31
        • 2011-07-18
        • 1970-01-01
        • 2012-12-12
        相关资源
        最近更新 更多