0

我有 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 关键字

4

2 回答 2

3

您使用什么客户端来发出这些命令?ORA-24344 是一个奇怪的错误。

在 SQL*PLus 中,我们可以获得更多关于编译错误的信息,如下所示:

SQL>  show errors

至于 ORA-00923 错误,那是因为在 Oracle 的 SQL 版本中,我们总是要从表中进行选择。所以你应该执行

select OCI_SUCCESS_WITH_INFO
from dual
/

我不确定这有多大意义,但至少你不会得到错误。


“这是 Navicat 问题”

这并不让我感到惊讶,因为我在我的数据库上运行了您的代码,并且它顺利构建。

于 2010-08-03T06:29:10.063 回答
0

也许它对某人有用:

如果您使用的是 Oracle 10g 和 OCI 驱动程序,ORA-24344 会显示触发器何时在代码中具有回车符 (\r),例如。文件是使用 Windows 行尾样式创建的。

于 2014-05-27T09:57:13.760 回答