Oracle觸發器編譯錯誤及解決方案


  錯誤

TRIGGER **** 編譯錯誤
錯誤:PLS-00103: 出現符號 "END"在需要下列之一時:
        ( begin case declare exit
          for goto if loop mod null pragma raise return select update
          while with <an identifier>
          <a double-quoted delimited-identifier> <a bind variable> <<
          continue close current delete fetch lock insert open rollback
          savepoint set sql execute commit forall merge pipe purge
行:8
文本:end****;
 
錯誤原因:
這種時候一般有兩種情況,分析如下:
        1.掉了結束的符號(如:分號,if的結束end if;最有可能的還是分號),這種屬於比較好查的情況,仔細檢查即可發現問題。
        2.存儲過程中可能出現全角的空格,這種錯是不可見的,存儲過程只接受半角的空格,這種錯誤屬於比較難查的,只能通過斷點或者將可能出錯的注釋點排除查錯。實在查不出來,最傻的辦法就是重新再手敲輸入一遍。
   3.第三種情況一半是很容易忽略的的錯誤,觸發器創建之后必須輸入內容,不可為空,否則編譯報錯。例如:有的人新建了觸發器,后來發現觸發器不必要,但是又不想刪除,於是把內部代碼全部注釋再去編譯,然后就拋出異常的,一個沒有內容的觸發器是沒有存在的必要的,可以刪除或者禁用。


免責聲明!

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



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