2016-12-11 5 views
0

Я новичок в PL/SQL и объектах DB. Я написал триггер после вставки, основанный на условии, но я получаю ошибку PLS 00103; Пожалуйста помоги.Oracle Trigger PLS 00103

Ниже мой триггер сценарий,

CREATE TRIGGER trigger1 AFTER INSERT 
    ON Table1 
    FOR EACH ROW 
when (new.upper(Table1.column1)='ABC') 
Declare 
    ITEM_CODE table2.ITEM_CODE%TYPE; 
BEGIN 
    ITEM_CODE := :new.ITEM_CODE; 

    INSERT INTO table2(PK,ITEM_CODE,EVENT_NUMBER) 
    VALUES(EVENT_NUMBER_SEQ.NEXTVAL, ITEM_CODE,EVENT_NUMBER_SEQ.NEXTVAL);   
END; 

Я этот скрипт через жаба.

Спасибо заранее.

+1

'(new.upper (Table1.column1) = 'ABC')' 'должен быть верхний (new.column1) -«ABC'' –

ответ

1

проблема здесь: when (new.upper(Table1.column1)='ABC') должна быть (when upper(new.column1) ='ABC')
Также вам не нужно объявить переменную только присвоить значение. Просто используйте значение напрямую.

CREATE TRIGGER trigger1 AFTER INSERT 
    ON Table1 
    FOR EACH ROW 
when (upper(new.column1) ='ABC')` 
BEGIN 
-- IF (upper(:new..column1) ='ABC') THEN 
    INSERT INTO table2(PK,ITEM_CODE,EVENT_NUMBER) 
    VALUES(EVENT_NUMBER_SEQ.NEXTVAL, :new.ITEM_CODE,EVENT_NUMBER_SEQ.NEXTVAL); 
--END IF;  
END; 
+0

@NicholasKrasnov Да, я сделал IF первый и скопирован когда. Удаленная точка с запятой из предложения 'when'. – Kacper

Смежные вопросы