ORA-00906:缺少左括号

问题描述 投票:0回答:5
create table widep(
 cac NUMBER,
 ddate DATE,
 dtime TIMESTAMP,
 type VARCHAR2,
 amount NUMBER(10,2),
 constraint qwe foreign key(cac) references cust(cac)
)
oracle
5个回答
20
投票

完整错误消息指出

Error at Command
Line:5 Column:15
这是这个位置:

type VARCHAR2,
            ^^^

VARCHAR2
需要一个大小参数来定义最大字符数。使用类似的东西

create table widep(
 cac NUMBER,
 ddate DATE,
 dtime TIMESTAMP,
 type VARCHAR2(100),
 amount NUMBER(10,2),
 constraint qwe foreign key(cac) references cust(cac)
);

0
投票

必须为 VARCHAR2 指定大小。 VARCHAR2 通常需要 4000 字节(标准),如果扩展则最多可以占用 32767 字节。

我们有 2 个选项 Byte 或 Char。

BYTE 表示该列将具有字节长度语义。 CHAR 指示该列将具有字符语义。 *来源:https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020


0
投票

万一您想使用 Java 进行迁移,这将是您的 up 方法中的等效语句。

如果你想创建一个表

@Override
  public void up() {
    schema.createTable("table_name").addColumn("column_name", DataType.VARCHAR2).precision(9);
  }

如果您想更改表格

@Override
  public void up() {
    schema.alterTable("table_name").addColumn("column_name", DataType.VARCHAR2).precision(9);
  }

此处使用DataType.VARCHAR2供您参考,但是,您可以从多种不同类型中进行选择。

方法 precision将添加列大小。


0
投票

varchar2 需要大小,因此您需要在使用像 varchar2(20) 这样的数据类型 varchar2 时指定大小


-1
投票

创建表宽(
cac NUMBER(10,2) 不为空,
日期日期,
dtime 时间戳,
类型 VARCHAR2(50),
金额 NUMBER(10,2),
约束 cac_fk 外键 key(cac) 引用 cust(cac)
);

© www.soinside.com 2019 - 2024. All rights reserved.