2010-08-03 151 views
0

我有Oracle 10gR2。我正在嘗試創建自動增量觸發器。 下面是示例:Oracle 10gR2觸發器錯誤

CREATE SEQUENCE TEST_SEQ 
INCREMENT BY 1 
START WITH 1 
NOMAXVALUE 
/
CREATE TABLE TESTER (
ID_TESTER INTEGER NOT NULL, 
    VAL VARCHAR2(20) NOT NULL 
) 
/
CREATE OR REPLACE TRIGGER TIB_TESTER BEFORE INSERT 
ON TESTER FOR EACH ROW 
BEGIN 
SELECT TEST_SEQ.NEXTVAL 
INTO :NEW.ID_TESTER 
FROM DUAL; 
END; 
/

觸發創作出警告:

warning : ORA-24344: success with compilation error

當我得到錯誤值:

select OCI_SUCCESS_WITH_INFO; 
/

它提供了錯誤:

error : ORA-00923: FROM keyword not found where expected

回答

3

你是什​​麼客戶用來發布這些命令? ORA-24344是一個奇怪的錯誤。

在SQL * Plus,我們可以得到關於編譯錯誤這樣的詳細信息:

SQL> show errors 

對於ORA-00923錯誤,那是因爲在Oracle的SQL版本,我們總是必須從選擇一張桌子。所以你應該執行

select OCI_SUCCESS_WITH_INFO 
from dual 
/

我不知道多少意義,但至少你不會得到錯誤。


"It was Navicat problem"

這並不讓我感到吃驚,因爲我跑你的代碼對我的數據庫,它內置順利。

+0

我正在使用Navicat SQL for MAC OS X,最新版本 – kuzemchik 2010-08-03 06:55:17

+0

非常感謝。這是Navicat問題。 – kuzemchik 2010-08-03 07:13:37

0

也許它會爲別人有用:

如果您使用的是Oracle 10g和OCI驅動程序,ORA-24344節目時,觸發在代碼如回車符(\ r)。文件是用Windows結束風格創建的。