我正在尝试使用现有DDL文件创建一个表
CREATE TABLE SYSTEM.LS_Ss_VERSION
(
ID NUMBER (20) NOT NULL ,
SSID NUMBER (20) ,
CONTENT VARCHAR2 (4000 BYTE) ,
CREATEDBY NUMBER (20) ,
CREATED_ON DATE DEFAULT 'NULL'
)
错误是
SQL Error: ORA-01858: a non-numeric character was found where a numeric was expected
01858. 00000 - "a non-numeric character was found where a numeric was expected"
*Cause: The input data to be converted using a date format model was
incorrect. The input data did not contain a number where a number was
required by the format model.
我已经搜索过Google,但无法获得适当的解决方案。PLESE在这里建议我一个解决方案。
请删除'null'到null,然后在http://sqlfiddle.com/#!4/256ab中尝试:
CREATE TABLE LS_Ss_VERSION
(
ID NUMBER (20) NOT NULL ,
SSID NUMBER (20) ,
CONTENT VARCHAR2 (4000 BYTE) ,
CREATEDBY NUMBER (20) ,
CREATED_ON DATE DEFAULT NULL
)
您的问题是:
CREATED_ON DATE DEFAULT 'NULL'
'NULL'
是 string ,因此数据库将其作为隐式数据转换,使用蒙版指定为默认值的任何掩码,例如to_date('NULL', 'DD-MON-YYYY')
,这显然是胡说八道。
如果在系统放入null(不是字符串)的行时我们没有指定值
CREATED_ON DATE DEFAULT NULL
...因为无论如何都会发生这种情况。但是,鉴于列的名称,指定更有意义:
CREATED_ON DATE DEFAULT SYSDATE