今天寫了一個小的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