ORA-00933: SQL command not properly ended


今天寫了一個小的SQL語句類似下面的這句:

UPDATE A 
SET ID=B.ID 
FROM A,B 
WHERE A.NAME=B.NAME

 

在執行時居然報了“ORA-00933: SQL command not properly ended”這個錯誤提示信息,SQL語句如此簡單,不應該出現錯誤的!但是事實上確實報錯了,仔細看了下沒發現那里有問題,百度了一下,出現這個錯誤的情況還是挺多的,當拋出此錯誤提示信息,代表着SQL語句本身就是有問題的!(ORA-00933:SQL命令沒有正確的結束)比如:

1:可能SQL語句中關鍵字前后缺少空格

2:Oracle 給表起別名時,直接在表名的后面空格別名就可以,不需要AS

3:SQL 語句中缺少關鍵字或者多了某個關鍵字,比如:AND

4:SQL 語句中缺少關鍵字或者多了某個標點符號,比如:,

5:數據庫不同的版本或不同的數據庫支持的SQL的語法規則是不一樣的,一句SQL語句在一個數據中是正確的在另一個數據庫中未必也正確

后來發現,這個錯誤是很低級的,為了加深印象,在這里特記錄一下!在ORACLE數據庫中不支持我上面的這種修改的寫法,不能如此使用FROM這個關鍵字,應該這樣來寫才對(如下所示:)!

UPDATE A 
SET ID=(
        SELECT ID 
        FROM B 
        WHERE A.NAME=B.NAME
       )

參考:

1:http://stackoverflow.com/questions/8940471/sql-error-ora-00933-sql-command-not-properly-ended

2:http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10008.htm#SQLRF01708

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM