ora-00907缺少右括号日期

问题描述 投票:-1回答:2

当我在我的oracle JDBC上创建这个表时,我不断收到此消息,并且我不知道什么是错的(但我可以在MySQL服务器上执行此查询)。谁能想知道为什么我要继续这样做?

CREATE TABLE temporarytable ( 
 thetype     INT4, 
 acode       INT4, 
 acodea      INT4 DEFAULT 0, 
 aname       VARCHAR(50), 
 anameb      VARCHAR(50), 
 agcodec     VARCHAR(16), 
 agnome      VARCHAR(40), 
 acoded      INT4, 
 abname      VARCHAR(80), 
 ancode      INT4, 
 clieone     VARCHAR(80), 
 adate       DATE, 
 aqtifromi   NUMERIC(20, 6) NULL DEFAULT 0, 
 avaluei     NUMERIC(20, 6) NULL DEFAULT 0, 
 discxxtt    NUMERIC(20, 6) NULL DEFAULT 0, 
 somemore    NUMERIC(20, 6) NULL DEFAULT 0, 
 gaining     NUMERIC(20, 6) NULL DEFAULT 0, 
 valcms      NUMERIC(20, 6) NULL DEFAULT 0, 
 liqidd      NUMERIC(20, 6) NULL DEFAULT 0, 
 theback     NUMERIC(20, 6) NULL DEFAULT 0, 
 theprct     NUMERIC(20, 6) NULL DEFAULT 0, 
 somesll     NUMERIC(20, 6) NULL DEFAULT 0, 
 theccod     INTEGER 
) 

谢谢你的帮助。

sql oracle jdbc
2个回答
0
投票

好的......我想我已经解决了。

它抱怨说:

NULL DEFAULT 0

所以在我改为DEFAULT 0后,我改变了一些类型以便Oracle数据库兼容性。


0
投票

是的,在NULL之前添加DEFAULT 0毫无意义,即使添加DEFAULT NULL也是如此。

因为,如果列没有DEFAULT值,则隐含地将NULL作为默认值。

此外,oracle中没有数据类型INT4,而是使用INTEGER

CREATE TABLE temporarytable ( 
 thetype     INTEGER, 
 acode       INTEGER, 
 acodea      INTEGER DEFAULT 0, 
 aname       VARCHAR(50), 
 anameb      VARCHAR(50), 
 agcodec     VARCHAR(16), 
 agnome      VARCHAR(40), 
 acoded      INTEGER, 
 abname      VARCHAR(80), 
 ancode      INTEGER, 
 clieone     VARCHAR(80), 
 adate       DATE, 
 aqtifromi   NUMERIC(20, 6) DEFAULT 0, 
 avaluei     NUMERIC(20, 6) DEFAULT 0, 
 discxxtt    NUMERIC(20, 6) DEFAULT 0, 
 somemore    NUMERIC(20, 6) DEFAULT 0, 
 gaining     NUMERIC(20, 6) DEFAULT 0, 
 valcms      NUMERIC(20, 6) DEFAULT 0, 
 liqidd      NUMERIC(20, 6) DEFAULT 0, 
 theback     NUMERIC(20, 6) DEFAULT 0, 
 theprct     NUMERIC(20, 6) DEFAULT 0, 
 somesll     NUMERIC(20, 6) DEFAULT 0, 
 theccod     INTEGER  
);
© www.soinside.com 2019 - 2024. All rights reserved.