当我在我的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
)
谢谢你的帮助。
好的......我想我已经解决了。
它抱怨说:
NULL DEFAULT 0
所以在我改为DEFAULT 0后,我改变了一些类型以便Oracle数据库兼容性。
是的,在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
);