2010-10-13 18 views
14

Non ho usato Oracle per un po 'quindi sono un po' arrugginito.errore oracle, colonna non consentita qui

Questo è il mio tavolo:

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

Ma quando provo ad inserire un valore come questo:

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

sto ottenendo:

ORA-00984: column not allowed here 

punta alla colonna di tipo alla fine. Ho la sensazione che non sto ottenendo qualcosa di giusto con il campo DATE come non l'ho mai veramente usato.

Cosa ho fatto di sbagliato?

risposta

21

Hai bisogno di mettere le virgolette attorno alla varchar2 Valori

Qualcosa di simile

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

Sembrava fare il trucco. Grazie – Jackass

+3

È un messaggio di errore fuorviante e il tipo di cosa che ci sorprende, arrugginito o no. – APC

+1

Nota, che devi usare le virgolette singole - usando le virgolette doppie si risolve nello stesso errore. Probabilmente perché le virgolette doppie sono riservate ai nomi delle tabelle, ai nomi delle colonne ecc., Che spiega il messaggio di errore. – iurii

3

Potrebbe essere perché type è un Oracle reserved word?

Sembra che questo non sia un problema. Leggi il commento di APC.

Non sto eliminando questa risposta perché trovo il commento utile.

+3

TYPE è un non riservata, ma il tipo di parola riservata che non può essere utilizzato. Questo perché TYPE è diventato una parola riservata solo in Oracle8 (la cosiddetta versione ORDBMS). A quel punto esisteva un enorme numero di codice che aveva legittimamente usato TYPE come nome di una colonna. Ad esempio la vista USER_SOURCE del dizionario di dati. Quindi vietare l'uso di TYPE come nome di una colonna potrebbe interrompere molte applicazioni. – APC

Problemi correlati