Триггеры SQL, показывающие ошибки PL / SQL: оператор SQL игнорируется PL / SQL: ORA-00936: отсутствует выражение - PullRequest
0 голосов
/ 17 октября 2018

Это мои операторы sql для записи триггера SQL, который должен называться FILM_LANG, чтобы добавить текст к описанию каждого нового фильма, вставленного в базу данных.Он основан на языке (language_id) и оригинальном языке (original_language_id) фильма.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Поскольку вы используете функцию concat и помещаете в нее больше параметров, это проблема, вместо этого вы должны использовать || для объединения строк.

0 голосов
/ 17 октября 2018

Поскольку вы запрашиваете язык таблиц на основе идентификаторов, не имеет большого значения, если у вас есть два отдельных оператора для более чистого кода.Кстати, функция CONCAT в Oracle работает только для двух аргументов, поэтому предпочитайте ||

CREATE OR replace TRIGGER "BI_FILM_LANG" 
  BEFORE INSERT ON "FILM" 
  FOR EACH ROW 
BEGIN 
    SELECT :NEW.description||'.Originally in ' 
           || name --no need to append :old.description, it's null for insert triggers. 
                   --Append :NEW.description if it contains anything before the string  
    INTO   :NEW.description 
    FROM   LANGUAGE 
    WHERE  language_id = :NEW.language_id; 

    SELECT :NEW.description 
           || '.Re-released in ' 
           || name --appends the :NEW.description 
    INTO   :NEW.description 
    FROM   LANGUAGE 
    WHERE  language_id = :NEW.original_language_id; 
END; 

/ 
...