2017-05-27 5 views
0

Es sollte sicherstellen, dass Sie nur vordefinierte Werte festlegen können, andernfalls wird ein Fehler angezeigt. Ich bekomme FehlerSQL-Trigger-Anweisung ignoriert

Fehler in Zeile 6: PL/SQL: Statement
4. FÜR JEDE REIHE
5. DECLARE
6. v_stru VARCHAR2 (50) ignoriert;

CREATE OR REPLACE TRIGGER radnici_strucna_sprema 
BEFORE INSERT OR UPDATE OF STRUCNA_SPREMA ON radnici 
FOR EACH ROW 
DECLARE 
    v_stru VARCHAR2(50); 
BEGIN 
    v_stru := :NEW.strucna_sprema; 
    IF v_ss = 'osnovno' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSIF v_ss = 'srednje' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSIF v_ss = 'vise' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSIF grade = 'visoko' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSE 
    RAISE_APPLICATION_ERROR(NUM => -20002, 
      MSG => 'Forma strucne spreme nije odgovarajuca!'); 
    END IF; 
END; 
+3

Welche Client Sie in diesen Fehler zu sehen? Es sieht wie [dieses Problem mit Ihrem Klienten aus, der PL/SQL nicht richtig behandelt] (https://Stackoverflow.com/a/37684613/266304), aber möglicherweise ein anderer Klient ... auch nicht direkt relevant, aber wo sollen 'v_ss' und' grade' kommen? –

Antwort

0

versuchen wie folgt aus:

CREATE OR REPLACE TRIGGER radnici_strucna_sprema 
BEFORE INSERT OR UPDATE ON radnici 
FOR EACH ROW 
DECLARE 
    v_stru VARCHAR2(50); 
BEGIN 
    v_stru := :NEW.strucna_sprema; 
    IF v_ss = 'osnovno' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSIF v_ss = 'srednje' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSIF v_ss = 'vise' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSIF grade = 'visoko' THEN 
    :NEW.strucna_sprema := v_stru; 
    ELSE 
    RAISE_APPLICATION_ERROR(NUM => -20002, 
      MSG => 'Forma strucne spreme nije odgovarajuca!'); 
    END IF; 
END; 

Das Problem

VON STRUCNA_SPREMA ist.

Diese Variable, STRUCNA_SPREMA, ist eine Spalte in der Tabelle, Radnici, oder was repräsentierende? Aber um ehrlich zu sein, ich verstehe deine Logik nicht. Sie ordnen den Wert der Spalte in einer Variablen zu und weisen dann den Wert dieser Variablen in Ihrer Spalte zu. Warum ?! Stellen Sie außerdem sicher, dass STRUCNA_SPREMA ein Varchar ist.

Mit freundlichen Grüßen, Stefan

+0

Der 'OF STRUCNA_SPREMA' bedeutet, dass der Trigger nur ausgelöst wird, wenn diese Spalte aktualisiert wird, also [das ist gültig] (https://docs.oracle.com/database/121/LNPLS/create_trigger.htm#BABGDFBI) (auch wenn der Logik macht nicht viel Sinn). Dies erklärt oder vermeidet den Fehler nicht, den der OP erhält. –

+0

Die Logik ist: Ich habe vordefinierte Werte für Strucna_Sprema und es muss überprüft werden, ist der Wert einer der vordefinierten und wenn ja, um diese Spalte zu setzen, wenn nicht zu senden und Fehler –