Ошибка запуска 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;
/

Создание триггера выдает предупреждение:

предупреждение: ORA-24344: успех с ошибкой компиляции

И когда я получаю значение ошибки:

select OCI_SUCCESS_WITH_INFO;
/

Это дает ошибку:

ошибка: ORA-00923: ключевое слово FROM не найдено там, где ожидается

2 ответа

Решение

Какой клиент вы используете для выполнения этих команд? ORA-24344 является специфической ошибкой.

В SQL*PLus мы можем получить больше информации об ошибках компиляции, например:

SQL>  show errors

Что касается ошибки ORA-00923, то это потому, что в версии Oracle для Oracle нам всегда приходится выбирать из таблицы. Так что вы должны выполнить

select OCI_SUCCESS_WITH_INFO
from dual
/

Я не уверен, насколько это имеет смысл, но, по крайней мере, вы не получите ошибку.


"Это была проблема Navicat"

Меня это не удивляет, так как я проверил ваш код по моей базе данных, и он был построен без проблем.

Может быть, это кому-нибудь пригодится

Если вы используете Oracle 10g и драйвер OCI, ORA-24344 показывает, когда триггер имеет знак возврата каретки (\r) в коде, например. Файл был создан с использованием стиля конца строки в Windows.

Другие вопросы по тегам