ошибка во время выполнения триггера: ORA-06502: ошибка в числовом выражении или значении PL / SQL

#oracle #plsql #database-trigger

#Oracle #plsql #база данных-триггер

Вопрос:

когда я пытаюсь вставить в таблицу данных, я получаю это «ошибка числа или значения: ошибка преобразования символа в число», это мой триггер :

     CREATE OR REPLACE TRIGGER TRIGGER_ON_TEMP 
BEFORE INSERT ON DATA 
    FOR EACH ROW
DECLARE 
    CURSOR ERR_MSG_CURSOR IS
    SELECT ERROR_MSG FROM REFERENTIEL;
    codeERR VARCHAR2(100); 
BEGIN
    OPEN ERR_MSG_CURSOR; ****
    LOOP
        FETCH ERR_MSG_CURSOR INTO codeERR;
            if (:new.DESCRIPTION LIKE '%' codeERR '%') THEN
                DBMS_OUTPUT.PUT_LINE('I got here:'||:new.DESCRIPTION);
             END IF;
    END LOOP;
    CLOSE ERR_MSG_CURSOR;
END;
  

Ошибка возникает в строке с ****. Я не совсем уверен в том, что вызывает эту ошибку, любая помощь?

Комментарии:

1. Измените '%' codeERR '%' на '%'||codeERR||'%' .

2. У вас также есть бесконечный цикл. Добавьте ‘EXIT WHEN ERR_MSG_CURSOR%NOTFOUND’ сразу после инструкции FETCH.

3. Какова цель этого триггера? Какую реальную проблему вы пытаетесь решить? Кстати: для начала вам не нужен курсор, for coderr in (select ... ) было бы более эффективно, см., например, пример в руководстве