Syntaxproblem bei Trigger

jebo34

Grünschnabel
Hallo,

da ich mich mit dem Aufbau von Triggern noch nicht so gut auskenne, liefert meine Version nur Fehler:(

Gegeben seien die Tabellen Druckbelege(Belegart, Belegnr), Auftragskopf (belegnr, Vertreternr1) und Vertreter (Vertreternummer, Suchname)

Die Referenzen lauten wie folgt:
Druckbelege (Belegnr)->Auftragskopf (Belegnr)
Auftragskopf (Vertreternr1)->Vertreter (Vertreternr)

Der Trigger startet, wenn es in Druckbelege einen neuen DS gibt und ich brauche den Suchnamen aus der Tabelle Verteter für einen Prozedur-Parameter.

Mein Erguss:

create or replace TRIGGER "MCP_DRUCKBELEGE_A_INSERT" AFTER INSERT ON "SYSADM"."DRUCKBELEGE"
REFERENCING OLD AS old NEW AS new

declare
bTermin boolean;
Vertreternummer number;
Vertretername varchar2(2);

BEGIN

if 1=1 and Belegart = 'A' then

Vertreternummer:=(select Vertreternr1 from Auftragskopf where druckbelege.belegnr=Auftragskopf.belegnr)
Vertretername:=(select Suchname from Vertreter where Vertreter.Vertreternr=Vertreternummer);
Prozedur (Vertreter);
END if;
end;

Eigentlich recht einfach, wenn man die richtige Sprache spricht:D

Danke,

Jens
 
Erstens: Oracle?

Zweitens: Nun, wo ist das Problem? Ausser das ich nicht sehe was der Trigger soll?

Drittens: Das einzige was ich grad seh ist das du nicht auf old und new referenzierst?
Belegart, ist das von old oder von new?
Ich stell es mir eher irgendwie so vor:
Code:
if 1=1 and new.Belegart = 'A' then
	Vertreternummer:=(select Vertreternr1 from Auftragskopf where new.belegnr=Auftragskopf.belegnr)
....
 

JEPP!

Zweitens: Nun, wo ist das Problem? Ausser das ich nicht sehe was der Trigger soll?

Der Syntax liefert beim compilieren mehrere Fehler:(

Drittens: Das einzige was ich grad seh ist das du nicht auf old und new referenzierst?

Brauche ich nicht, ist ja ein 'insert'

Ich stell es mir eher irgendwie so vor:
Code:
if 1=1 and new.Belegart = 'A' then
	Vertreternummer:=(select Vertreternr1 from Auftragskopf where new.belegnr=Auftragskopf.belegnr)
....

Der Syntax lautet:
Code:
if :new.belegart='A' then
       select vertreternr1 into vertreternummer from Auftragskopf where :new.belegnr=belegnr;
       select suchname into vertreterkürzel from vertreter where Vertreternummer=vertreternr;
       bTermin := true;
    end if;

Der Befehl zum Beschreiben der Variablen war total falsch.

Trotzdem danke, jetzt habe ich es, Trigger läuft!!

Gruß,

Jens
 
Zurück