Oracle : ORA 00933: SQL command not properly ended


ORA-00933: SQL command not properly ended

基於這個報錯,網上有很多答案,包括:
1.在INSERT語句中使用了JOIN或者ORDER BY
2.在UPDATE語句中使用了JOIN
3.在DELETE語句中使用了ORDER BY
4.在SELECT語句中使用了UNIONUNION ALL,並且在非結尾的地方使用了ORDER BY
5.在SELECT語句表之間忘記了逗號,
6.在Oracle 8i中使用INNER JOIN或類似的關鍵詞(這些是在Oracle 9i中實現的)
7.遺漏逗號,遺漏括號,子語句使用錯誤
...
比較好的博客有How To Resolve ORA-00933 SQL Command Not Properly Ended
可以說這個問題產生的原因五花八門
我的問題也很奇怪,我使用Navicat直連數據庫,並執行語句進行測試,測試通過

delete from d1 
where ID in 
(select d1.ID 
from d1 
join d2 
on d1.d2ID = d2.ID 
where d2.xxx = '...');

執行結果

> Affected rows: 0
> 時間: 0.013s

但使用Oracle.DataAccess或者Oracle.ManagedDataAccess執行該語句的時候,報錯:

ORA 00933: SQL command not properly ended

這令我百思不得其解,后來通過測試發現:把最后的分號去掉就可以了,即變成:

delete from d1 
where ID in 
(select d1.ID 
from d1 
join d2 
on d1.d2ID = d2.ID 
where d2.xxx = '...')

這里Mark一下,如果有知道這個問題原因的大神,希望可以科普一下~

參考資料

C#連接Oracle數據庫的方法

-----------------------后記------------------------------------------
我去stackoverflow上面問了一下:簡單來說,不需要在最后加分號
ORA 00933: SQL command not properly ended with C#


免責聲明!

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



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