#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 ... )
было бы более эффективно, см., например, пример в руководстве