2014-05-18 45 views
0

我嘗試執行以下命令:ORA-00900:無效的SQL語句 - 不能確定什麼是錯

IF NOT EXISTS (select * from IT_IMAGES where IT_CODE='8717163044612') 
    BEGIN 
    INSERT INTO IT_IMAGES (LARGE_IMG,SMALL_IMG,IT_CODE,LAN_CODE) VALUES ('7290011051310.jpg','7290011051310.jpg','8717163044612','1') 
    END 

但我不斷收到ORA-00900:無效的SQL語句。你能幫我解決這個問題嗎?

+1

你是否在存儲過程,觸發器,函數或PL/SQL塊中運行這個?或者你只是在內部運行這個代碼,比如說,蛤蟆? –

+0

我使用直接sql與TOAD – Programer

+0

你的代碼在SQL Server上適合我。這是你在這裏發佈的完整查詢,還是還有更多? –

回答

1

以下應爲你工作:

INSERT INTO IT_IMAGES(LARGE_IMG, SMALL_IMG, IT_CODE, LAN_CODE) 
    SELECT '7290011051310.jpg', '7290011051310.jpg', '8717163044612', '1' 
    FROM dual 
    WHERE NOT EXISTS (SELECT 1 FROM IT_IMAGES WHERE IT_CODE = '8717163044612'); 

正如我想想,我沒有使用if除了在甲骨文begin/end語句。你可能需要一個編程塊來使用if(MySQL確實需要這個)。但上面應該解決這個問題。

Here是它在SQL Fiddle中工作的一個例子。

+0

mmm ...我試過這個,現在我得到ORA-00933:SQL命令沒有正確結束 – Programer

+0

它在SQL小提琴中工作(請參閱答案中的鏈接)。 –

+2

是的,在Oracle中,只能在PL/SQL塊中使用條件邏輯,而不能在普通SQL中使用。 –