【问题标题】:Oracle 10gR2 trigger errorOracle 10gR2 触发错误
【发布时间】:2010-08-03 06:11:22
【问题描述】:

我有 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 关键字不是 在预期的地方找到

【问题讨论】:

    标签: sql oracle triggers oracle10g ora-00923


    【解决方案1】:

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

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

    SQL>  show errors
    

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

    select OCI_SUCCESS_WITH_INFO
    from dual
    /
    

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


    “这是 Navicat 的问题”

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

    【讨论】:

    • 我正在使用 Navicat SQL for MAC OS X,最新版本
    • 非常感谢。这是 Navicat 的问题。
    【解决方案2】:

    也许它对某人有用:

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

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 1970-01-01
      • 2014-04-07
      • 2014-11-29
      • 2011-09-16
      • 2017-06-10
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多