1. 程式人生 > >都是分號惹的禍(ORA-00911: invalid character)

都是分號惹的禍(ORA-00911: invalid character)

今天在寫SQL查詢Oracle中的資料時遇到一個問題。在一般的SQL查詢分析器中寫好的SQL語句(執行一切正常),扔到用C++寫的程式中就報錯。錯誤程式碼如下:
ORA-00911: invalid character
檢查了半天,實在是沒找到任何SQL錯誤的原因,(本來懷疑是字元轉碼的問題,後來給排除了);最後,終於在網上查到了答案,原來“都是分號惹的禍”!
我一般寫SQL的時候都喜歡在每個語句結尾加上";",我想這也是一般寫SQL的程式設計師的習慣。因為很多SQL的查詢分析其時都會將這個分號當成一個語句的結束。但是,其實在正式執行的時候,是不能將這個分號扔到Oracle的解析器中的,因為Oracle的語法解析器特別嚴格,就會報出以上的錯誤出來,解決方法也很簡單,去掉分號就可以了。


以上的問題適用於任何用程式書寫的Oracle資料查詢,看起來有時候習慣也會害死人的。

注:
    我是用C++語言的OCI介面呼叫sql語句,sql語句末尾加了分號。
錯誤號: 911 
錯誤描述:ORA-00911: invalid character