2016-12-11 4 views
0

Ich bin ein Neuling in PL/SQL und DB-Objekte. Ich habe einen Trigger nach dem Einfügen basierend auf Bedingung geschrieben, aber ich bekomme PLS 00103 Fehler aufgetreten;. Bitte helfen Sie.Oracle Trigger PLS 00103

Unten ist mein Trigger-Skript,

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; 

ich dieses Skript durch Toad bin ausführen.

Vielen Dank im Voraus.

+1

'(new.upper (table1.column1) = 'ABC')' 'soll obere sein (new.column1) -‚ABC'' –

Antwort

1

Problem ist hier: when (new.upper(Table1.column1)='ABC') sollte (when upper(new.column1) ='ABC')
sein Auch brauchen Sie nicht deklarieren Variable nur um Wert zuweisen. Verwenden Sie den Wert direkt.

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 Ja, ich habe IF erste und kopiert, wenn. Semikolon von 'when'-Klausel entfernt. – Kacper