2013-06-11 11 views
19

sto facendo un semplice Oracle INSERT e continuo a ricevere questo errore: [Err] ORA-00984: column not allowed hereORA-00.984: colonna non permesso qui

INSERT INTO MY.LOGFILE 
(id,severity,category,logdate,appendername,message,extrainfo) 
VALUES 
(
"dee205e29ec34", 
"FATAL", 
"facade.uploader.model", 
"2013-06-11 17:16:31", 
"LOGDB", 
NULL, 
NULL 
) 
+4

Utilizzare virgolette singole (apostrofi) attorno a stringhe letterali, ad es. 'FATALE'. Le doppie virgolette sono opzionalmente (raramente) usate intorno agli identificatori come i nomi delle colonne. –

risposta

46

Sostituire le virgolette con quelli singoli:

INSERT 
INTO MY.LOGFILE 
     (id,severity,category,logdate,appendername,message,extrainfo) 
VALUES (
     'dee205e29ec34', 
     'FATAL', 
     'facade.uploader.model', 
     '2013-06-11 17:16:31', 
     'LOGDB', 
     NULL, 
     NULL 
     ) 

In SQL, le virgolette doppie vengono utilizzate per contrassegnare gli identificatori, non le costanti stringa.

+0

Questo è l'errore che sto ottenendo ora. ORA-01861: letterale non corrisponde alla stringa di formato –

+0

@GeorgeMurphy: per favore pubblica la definizione della tabella. – Quassnoi

+3

Questo è quasi sicuramente perché 'logdate' è un _date_ @George, stai cercando di inserire un _character_. Devi convertirlo in una data usando [TO_DATE()] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions203.htm#SQLRF06132), vedi qualcosa come http: // stackoverflow .com/questions/10178292/confrontando-date-in-oracle-sql/10178346 # 10178346 o http://stackoverflow.com/questions/11883923/converting-number-to-date-in-oracle/11884028#11884028 o centinaia di altri... – Ben

Problemi correlati