2010-10-13 193 views
14

我有一段時間沒有使用Oracle,所以我有點生疏。oracle錯誤,列不允許在這裏

這是我的表:

create table calendar(
username VARCHAR2(12), 
content VARCHAR2(100), 
dateContent DATE, 
type CHAR(3) CHECK (type IN ('PUB', 'PRV'))); 

但是,當我嘗試插入這樣一個值:

insert into calendar 
(username, content, dateContent, type) 
values 
(chris, assignment due, to_date('01-OCT-2010 13:00','DD-MON-YYYY HH24:MI'), PUB) 
/

我越來越:

ORA-00984: column not allowed here 

指向類型列最後。我有一種感覺,我沒有正確地使用DATE字段,因爲我從來沒有真正使用它。

我做錯了什麼?

回答

21

你需要把報價一輪VARCHAR2值

喜歡的東西

insert into calendar(username, 
        content, 
        dateContent, 
        type) 
    values('chris', 
     'assignment due', 
     to_date('01-OCT-2010 13:00','DD-MON-YYYY HH24:MI'), 
     'PUB'); 
+0

這似乎有伎倆。謝謝 – Jackass 2010-10-13 14:23:16

+3

這是一個誤導性的錯誤信息和那種讓我們都感覺到生鏽或不生鏽的事情。 – APC 2010-10-13 15:23:09

+1

請注意,您必須使用單引號 - 使用雙引號解析爲相同的錯誤。可能是因爲雙引號是爲表名,列名等保留的,這就解釋了錯誤信息。 – iurii 2014-07-02 09:26:10

3

難道是因爲typeOracle reserved word

看起來這不是問題。閱讀APC的評論。

我不刪除這個答案,因爲我覺得評論有用。

+3

類型是保留,但不是那種保留字不能使用。這是因爲TYPE只是成爲Oracle8中的一個保留字(所謂的ORDBMS版本)。到那時,有一個龐大的代碼庫已經合法地將TYPE用作列名。例如數據字典的USER_SOURCE視圖。所以禁止使用TYPE作爲列名會破壞很多應用程序。 – APC 2010-10-13 15:21:00

相關問題