2017-01-17 84 views
0

我试图简单地创建一个Oracle表,我得到一个无效的数据类型错误,但它似乎没有错我的创建语句(除非我完全忽略了某些东西)。Oracle:在创建表上无效的数据类型错误

CREATE TABLE SCRIPT_LINE 
    (
     ID INTEGER PRIMARY KEY NOT NULL, 
     EPISODE_ID INTEGER NOT NULL, 
     LINE_NUMBER INTEGER, 
     RAW_TEXT VARCHAR(4000), 
     TIMESTAMP NUMERIC, 
     SPEAKING_LINE BOOLEAN, 
     CHARACTER_ID INTEGER NOT NULL, 
     LOCATION_ID INTEGER NOT NULL, 
     CHARACTER VARCHAR(500), 
     LOCATION VARCHAR(500), 
     SPOKEN_WORD VARCHAR(4000), 
     WORD_COUNT INTEGER 
    ); 

任何想法的错误可能是?提前致谢。

+0

此外 - 请参阅[VARCHAR'和'VARCHAR2'之间的区别](http://stackoverflow.com/questions/1171196/what-is-the-difference-between- VARCHAR和-VARCHAR2)。 – MT0

+0

@ MT0:没有什么区别VARCHAR是VARCHAR2的同义词 –

+0

@a_horse_with_no_name目前没有实现差异,但'VARCHAR'是Oracle标准VARCHAR的占位符,目前Oracle不支持这种标准(所以别名为'VARCHAR2 '),但可以选择在以后的版本中支持。有一个空字符串和一个表示同一事物和不同事物的未知(NULL)之间存在语义差异;因此,尽管OP目前不支持,但OP应该理解其差异并考虑未来的应用,以便在实施ANSI标准时使用最适合的类型。 – MT0

回答

2

Oracle没有一个BOOLEAN数据类型

+0

谢谢你。然而,在我的开发者控制台中,这是一个突出的词,这让我相信它存在。 –

+0

'BOOLEAN'是PL/SQL中的有效类型 - 但它不是Oracle RDBMS引擎中的有效类型。所以这取决于你在哪里。 :-)个人而言,当我需要一个Yes/No类型的事物时,我使用'VARCHAR2(1)NOT NULL CHECK(whatever_field IN('Y','N'))''。适用于我的目的已经足够好了。 –

0

如Oracle不支持布尔,最好的替代方案将是char(1) Y/N。或者使用数字(1)0/1

相关问题