ORA-00902:无效的数据类型 - 列名称包含连字符

时间:2014-02-14 04:55:40

标签: oracle

我们有一个包含以下结构的表:

CREATE TABLE XREF_WORKER_EMPLOYME_2(
    Siebel-01 VARCHAR2(2000),
    ROW_ID VARCHAR2(48) NOT NULL,
);

表创建失败,错误如下:

ORA-00902: invalid datatype

我们需要保留名为“Siebel-01”的列。 请建议如何使用此结构创建表,以及在列名中插入数据或使用“ - ”查询表时会出现哪些进一步的问题。

4 个答案:

答案 0 :(得分:2)

将名称用双引号括起来。

CREATE TABLE XREF_WORKER_EMPLOYME_2( "Siebel-01" VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL );

但您也需要针对此列引用大多数查询。如果你真的不能避免这种情况,请仔细考虑:)

此外,您需要删除的列定义末尾还有一个额外的逗号。

答案 1 :(得分:0)

comma关键字后面有一个NOT NULL,其中一个列名称中有一个连字符,需要处理,如果你想要的话,而不是不受欢迎的

CREATE TABLE XREF_WORKER_EMPLOYME_2( Siebel-01 VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL, );

删除该逗号,让你的DDL像这样

CREATE TABLE XREF_WORKER_EMPLOYME_2( Siebel_01 VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL );

OR

CREATE TABLE XREF_WORKER_EMPLOYME_2( "Siebel-01" VARCHAR2(2000), ROW_ID VARCHAR2(48) NOT NULL );

答案 2 :(得分:0)

您已在Siebel-01中使用连字符而非下划线,并在结尾处删除逗号(,) ..

试试这个

CREATE TABLE XREF_WORKER_EMPLOYME_2(
    Siebel_01 VARCHAR2(2000),
    ROW_ID VARCHAR2(48) NOT NULL
);

答案 3 :(得分:0)

你不能这样做,因为Oracle不允许( - )连字符或减号签到数据库名......

请点击此链接.. Schema Object Naming Rules