2015-01-16 25 views
9

我試圖執行一個SQLINSERTToad for oracle我該如何解決ORA-00911:無效字符錯誤?

INSERT INTO GRAT_ACTIVITY 
    (UUID, IP_ADRESS, SEND_MAIL, DATE_CREA, DATE_UPD, CREATOR, CENTER, ETAT, REQUEST) 
VALUES('555-vgd9-pllkd-5513', '172.12.23.130', 'N', SYSDATE, SYSDATE, '1554', 'M18', 'I', 8842); 
--COMMIT; 

GRAT_ACTIVITY表結構如下:

CREATE TABLE CASH.GRAT_ACTIVITY 
(
    UUID  VARCHAR2(64 BYTE) NOT NULL, 
    IP_ADRESS VARCHAR2(15 BYTE), 
    SEND_MAIL VARCHAR2(1 BYTE), 
    DATE_CREA DATE, 
    DATE_UPD DATE, 
    CREATOR VARCHAR2(4 BYTE), 
    CENTER  VARCHAR2(4 BYTE), 
    ETAT  VARCHAR2(1 BYTE), 
    REQUEST NUMBER 
) 

錯誤消息:

ORA-00911:無效字符

原因:標識符可能不以字母和數字以外的任何ASCII字符開頭。 $#_也是在第一個 之後的字符。由雙引號括起來的標識符可能包含除雙引號之外的任何 字符。替代引號(q'#...#') 不能使用空格,製表符或回車符作爲分隔符。有關所有 其他上下文,請參閱「SQL語言參考手冊」。

操作:無

我怎樣才能解決呢?

+2

聲明沒有問題。我似乎記得一些版本的蟾蜍被評論弄糊塗了。如果你完全刪除註釋掉的提交,它是否工作?你是作爲聲明還是作爲腳本運行? –

+0

我沒有問題使用SQL Plus(不是蟾蜍)執行DDL和DML。 –

+0

[這可能是相關的](https://support.software.dell.com/toad-for-oracle/kb/47096),雖然它對同一行有評論。 –

回答

25

您正在執行的語句是有效的。這個錯誤似乎意味着Toad將尾隨分號作爲命令的一部分包含在內,當它作爲語句的一部分包含時,確實會導致ORA-00911--因爲它是客戶端中的語句分隔符,而不是語句本身的一部分。

它可能是以下注釋掉的線,令人困惑的蟾蜍(012​​);或者可能是因爲您試圖將所有內容作爲單個語句運行,在這種情況下,您可以嘗試使用運行腳本命令(F9)而不是運行語句(F5)。

只是刪除已註釋的行會導致問題消失,但如果您還看到了實際提交的情況,則可能是因爲您使用了錯誤的方法來運行語句。

關於Toad如何在評論on this related question中解析分號的信息有點多,但我對Toad不夠熟悉,無法詳細瞭解。

+0

@MichaelS。 - 你的回答給出了關於蟾蜍運行命令的更多細節,因此它可能是有用的,你可以考慮取消它 - 我不認爲這是偷獵* 8-) –

+0

謝謝。這個答案使我的一天 – hackmith

0

如果在列名或表名中使用除$,_和#以外的特殊字符,則名稱必須用雙引號引起來。 Link

+0

從DDL和DML的問題來看,情況並非如此。 –

+0

@erakm我不使用任何特殊字符 –

+0

認爲選項-2是在我寫在我的答案相同的鏈接。選項-2:如果您已將SQL從其他程序粘貼到編輯器中,則可能會發生此錯誤。有時會出現不可打印的字符。在這種情況下,你應該嘗試重新輸入你的SQL語句,然後重新執行它。 – erakm

0

我最近遇到了同樣的事情。這只是由於在將文檔中的腳本複製到sql開發人員時出現空格造成的。我不得不刪除的空間和腳本運行。

相關問題