ORA-00902:无效数据类型错误求助——SQL建表语句问题排查
ORA-00902: invalid datatype 错误排查与修复
错误根源
脚本中T_Time Time这一行使用了Oracle不支持的Time数据类型,这是触发ORA-00902错误的直接原因。Oracle数据库没有原生的Time类型,针对时间存储需求,有两种标准方案:
- 使用
DATE类型:Oracle的DATE本身包含年、月、日、时、分、秒完整时间信息 - 使用
TIMESTAMP类型:精度更高,支持小数秒(如毫秒、微秒级)
修正后的SQL脚本
方案1:使用TIMESTAMP存储时间
CREATE TABLE TranInfo ( T_ID CHAR(11) NOT NULL, T_Amount NUMBER(15) NOT NULL, T_Time TIMESTAMP, T_Date DATE, C_ID CHAR(11) NOT NULL, PRIMARY KEY(T_ID), FOREIGN KEY(C_ID) REFERENCES Customer (C_ID) );
方案2:使用DATE存储时间(无需小数秒场景)
CREATE TABLE TranInfo ( T_ID CHAR(11) NOT NULL, T_Amount NUMBER(15) NOT NULL, T_Time DATE, T_Date DATE, C_ID CHAR(11) NOT NULL, PRIMARY KEY(T_ID), FOREIGN KEY(C_ID) REFERENCES Customer (C_ID) );
额外说明
原脚本中FOREIGN KEY(C_ID)REFERENCES的写法可以在REFERENCES前添加空格,虽然Oracle语法允许无空格,但这样能提升代码可读性,不影响执行效果。
内容的提问来源于stack exchange,提问作者JAM
相关产品推荐
相关产品推荐

