0

我是 SQL 新手,我想创建一个表。有时我成功地创建了一个表,有时我失败了。帮助我,当我失败时,我找不到哪里出错了。我总是收到此错误消息

ORA-00907: missing right parenthesis
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190200", line 592
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190200", line 578
ORA-06512: at "APEX_190200.WWV_FLOW_DYNAMIC_EXEC", line 2057

3.             (
4.              CustomerID INT(2)
5.             ,CityID INT(2)
6.             ,CustomerName VARCHAR2(20)
7.             ,CONSTRAINT cu_pk PRIMARY KEY (CustomerID)

我的SQL语句如下:

CREATE TABLE
        Customer
            (
             CustomerID INT(2)
            ,CityID INT(2)
            ,CustomerName VARCHAR2(20)
            ,CONSTRAINT cu_pk PRIMARY KEY (CustomerID)
            );
4

2 回答 2

1

Oracle 与 MySQL 不同(没有数据类型INT(n)):

CREATE TABLE Customer
(
         CustomerID INT --remove (2)  or change to NUMBER(2,0)
        ,CityID INT     --(2)
        ,CustomerName VARCHAR2(20)
        ,CONSTRAINT cu_pk PRIMARY KEY (CustomerID)
);

db<>小提琴演示

11.1.6 数值类型属性

MySQL 支持扩展,用于在类型的 base 关键字后面的括号中可选地指定整数数据类型的显示宽度。

于 2019-12-29T06:07:54.397 回答
0
  • INTorINTEGER在 oracle 中只是NUMBER数据类型的子类型。

  • INT/INTEGER只能接受整数,即 1,5,13 等。

  • Oracle 支持INT作为ANSI标准有它。但是在 oracle 中,数字的主要数据类型是NUMBER.

  • INT/INTEGER可以表示如下:

    NUMBER(*,0)
    

这里,* 表示允许的最大值。

根据oracle 文档INTEGER是 (-2^31) 到 (2^31)-1 范围内的整数。

您应该使用INT不带任何精度的数据类型。因此,在您的示例中删除(2)之后INT,您就可以开始了。如果您只需要两位数,请使用 NUMBER 数据类型,如下所示:

NUMBER(2,0)

干杯!!

于 2019-12-29T06:43:06.213 回答