oracle ORA-00906:缺少左括号

iezvtpos  于 2023-01-20  发布在  Oracle
关注(0)|答案(4)|浏览(286)
create table widep(
 cac NUMBER,
 ddate DATE,
 dtime TIMESTAMP,
 type VARCHAR2,
 amount NUMBER(10,2),
 constraint qwe foreign key(cac) references cust(cac)
)
mzsu5hc0

mzsu5hc01#

完整错误消息指出Error at Command**Line:5 Column:15**位于以下位置:

type VARCHAR2,
            ^^^

VARCHAR2需要一个size参数来定义最大字符数。

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

szqfcxe22#

必须为VARCHAR2给予一个大小。VARCHAR2通常为4000字节(标准),如果进行扩展,则最多可为32767字节。
我们有2个选项字节或字符。
BYTE表示列将具有字节长度语义。CHAR表示列将具有字符语义。* 源代码:https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020

mlmc2os5

mlmc2os53#

为了防止您想使用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将添加列大小。

epggiuax

epggiuax4#

CREATE TABLE widep(
cac NUMBER(10,2) not null,
date DATE,
dtime TIMESTAMP,
type VARCHAR2(50),
amount NUMBER(10,2),
CONSTRAINT cac_fk FOREIGN KEY key(cac) REFERENCES cust(cac)
);

相关问题