![]() |
stored proceduren in triggern ausführen?
hallo gemeinde,
folgender trigger feuert bei insert odr update. es klappt auch ganz gut.ich habe jetzt ein problem.die procedure padd_Mitarbeiter muss eine ID übergeben werden, welche ich in einer anderen procedure ermittle, die auch in ein andere tabelle eingreift und hier meckert ibexpert. die frage ist nun, ob es sinnvoll ist die proceduren zu verschachteln, oder anders gefragt geht das überhaupt? DB :Firebird 1.5 zugriff : ibexpert
SQL-Code:
raik
CREATE TRIGGER TAB_ANWESENHEIT_BIU1 FOR TAB_ANWESENHEIT
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS DECLARE VARIABLE IMITARBEITERID INTEGER; BEGIN IF (NEW.ANWESENHEIT_ID IS NULL) THEN BEGIN NEW.ANWESENHEIT_ID = GEN_ID(GEN_TAB_ANWESENHEIT_ID,1); EXECUTE PROCEDURE PADD_MITARBEITER(2); END ELSE BEGIN UPDATE TAB_ANWESENHEIT SET OUT_TIME = CURRENT_TIME; END END |
Re: stored proceduren in triggern ausführen?
Das geht auf jeden Fall, poste einfach mal wobei er meckert.
|
Re: stored proceduren in triggern ausführen?
hallo,
ich habe die procedure PAdd_Mitarbeiter, welche die id erwartet . diese id ermittle ich in einer anderen procedure, so das das statement wie folgt aussieht
SQL-Code:
wobei die procedure Psearch_mitid auf eine andere tabelle zugreift,
execute procedure pAdd_mitarbeiter(execute procedure Psearch_mitid(vnummer))
wenn ich die parameter für die erste procedure hard codiere funktioniert das . raik |
Re: stored proceduren in triggern ausführen?
So geht das nicht.
Leg Dir eine Variable an, hol Dir den Rückgabewert der ersten Methode und rufe die zweite damit auf:
Delphi-Quellcode:
Das müßtest Du noch anpassen, aber so wirds funktionieren.
CREATE TRIGGER TAB_ANWESENHEIT_BIU1 FOR TAB_ANWESENHEIT
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS DECLARE VARIABLE IMITARBEITERID INTEGER; DECLARE VARIABLE MyID INTEGER BEGIN IF (NEW.ANWESENHEIT_ID IS NULL) THEN BEGIN NEW.ANWESENHEIT_ID = GEN_ID(GEN_TAB_ANWESENHEIT_ID,1); MyID = null; select p.wert from Psearch_mitid(vnummer) p into :MyID if (:MyID is not null) then EXECUTE PROCEDURE PADD_MITARBEITER(:MyID); END ELSE BEGIN UPDATE TAB_ANWESENHEIT SET OUT_TIME = CURRENT_TIME; END END |
Re: stored proceduren in triggern ausführen?
danke,
werde ich probieren. raik |
Re: stored proceduren in triggern ausführen?
hallo kachel81,
es sieht schon vielversprechender aus, er meckert aber trotzdem noch und sagt, das die spalte vnummer keinen bezug auf die referenztabelle hat. ist ja auch richtig, da diese procedure auf eine andere tabelle zugreift. raik |
Re: stored proceduren in triggern ausführen?
Genau, die vnummer mußt du dann entsprechend auch noch über ein Select ermitteln.
|
Re: stored proceduren in triggern ausführen?
so habe ich,
jetzt werde ich mal testen ob das so geht. gleich noch mal ne frage hinterher :shock: ich weis das man das nicht machen sollte, aber die mod schauen bestimmt nicht hier rein :duck: wie kann ich sp eigentlich debuggen? danke |
Re: stored proceduren in triggern ausführen?
Ich wußte garnicht, daß man das nicht machen sollte, naja...
Also ich verwende das Tool IBExpert, da ist ein Debugger für SP enthalten, mit Haltepunkten und einer Liste aller verwendeten Parameter mit Werten usw. Ich schreibe mir aber bei der Fehlersuche meistens die Werte die mich interessieren in eine Dummy-Tabelle raus. |
Re: stored proceduren in triggern ausführen?
ich nutze auch ibexpert , aber nur die freie version da ist das feature nicht eingeschaltet. naja trotzdem danke werde auch alles in eine tabelle rausschreiben.
naja für einen hobby programmierer ist das auch ausreichend :mrgreen: raik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz