我有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;
/
触发器创建会发出警告:
警告:ORA-24344:成功与 编译错误
当我收到错误值时:
select OCI_SUCCESS_WITH_INFO;
/
它给出错误:
错误:ORA-00923:FROM关键字不是 找到了预期的地方
答案 0 :(得分:3)
您使用哪个客户端发出这些命令? ORA-24344是一个奇怪的错误。
在SQL * PLus中,我们可以获得有关编译错误的更多信息,如下所示:
SQL> show errors
对于ORA-00923错误,这是因为在Oracle的SQL版本中,我们总是必须从表中进行选择。所以你应该执行
select OCI_SUCCESS_WITH_INFO
from dual
/
我不确定它有多大意义,但至少你不会得到错误。
“这是Navicat问题”
这对我来说并不让我感到惊讶,因为我在我的数据库上运行你的代码并且构建顺利。
答案 1 :(得分:0)
也许这对某些人有用:
如果您使用的是Oracle 10g和OCI驱动程序,则ORA-24344会在触发器中显示代码中的回车符号(\ r),例如。文件是使用Windows结束行样式创建的。