![]() |
Datenbank: Interbase • Version: 6 • Zugriff über: IBConsole
Zugriff auf Ergebnis einer Strored Procedure in SQL
Hallo!
Kann mir mal jemand auf die Sprünge helfen. :wall: Ich habe in der Datenbank folgende Stored Procedure generiert:
SQL-Code:
Ich kann die Procedure auch mit dem Aufruf :
SET TERM ^ ;
CREATE PROCEDURE StbGetID (MID INTEGER) RETURNS (PKID INTEGER) AS BEGIN SELECT AVG(ID) FROM Stundenbuchungen WHERE (Mitglieder_ID = :MID) INTO :PKID; SUSPEND; END ^ COMMIT WORK ^ SET TERM ;^
SQL-Code:
ansprechen. Nun würde ich gerne beim Hinzufügen eines Datensatzes über einen Trigger die neue ID aus der Procedure auslesen und in das entsprechende Datenbankfeld eintragen. Dazu habe ich folgendes versucht:
SELECT * FROM StbGetID(31);
SQL-Code:
:( Leider bekomme ich nur Fehlermeldungen um die Ohren gehauen. Wo ist der Fehler?
SET TERM ^ ;
CREATE TRIGGER Stb_Add FOR stundenbuchungen BEFORE INSERT AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = SELECT * FROM StbGetID(NEW.MITGLIEDER_ID); END ^ COMMIT WORK ^ SET TERM ;^ |
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
Welche Meldungen?
Willst Du wirklich den Durchschnitt der IDs ermiiteln? |
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
Außerdem dürfte ein
Zitat:
|
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
... ich denke, Du irrst nicht
|
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
@Billa
Zitat:
Dynamic SQL Error SQL error code = -104 Token unknown - line 4, char 49; Statement: CREATE TRIGGER Stb_Add FOR stundenbuchungen BEFORE INSERT AS BEGIN IF (NEW.ID IS NULL) THEN SELECT NEW.ID FROM StbGetID(NEW.MITGLIEDER_ID); END Das ich den Durchschnitt berechne ist sicher nicht sinnvoll :oops:, doch mir ging es um das Prinzip des Zugriff aus einem Trigger auf die Prozedure (habe einfach mal was in die Procedure geschrieben, damit ich ein Ergebnis bekomme). @DeddyH Das Feld soll durch den Trigger auf der Serverseite versorgt werden. Daher wird es beim Einfügen eines Datensatz nicht mit übergeben. Der Name ID ist auch irreführend. Es ist nicht die Datensatz ID. |
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
Für so etwas gibt es Generatoren
Jetzt verstehe ich - abgesehen von der Syntax - erst recht nicht mehr, was eigentlich Deine Absicht ist. |
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
Das hab ich schon verstanden, aber theoretisch kann ein
SQL-Code:
ja mehrere Felder zurückliefern. Gut, ist in diesem Fall ausgeschlossen, aber ich denke nicht, dass Interbase das überprüft. Versuch es stattdessen mal mit
SELECT *
SQL-Code:
NEW.ID = SELECT PKID FROM StbGetID(NEW.MITGLIEDER_ID);
|
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
Eher einen
SQL-Code:
select ... into :new.ID;
|
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
Kann auch sein, ich habe sowas noch nie versucht, da noch nicht gebraucht. Allerdings muss ich mich Billa anschließen, wozu soll das gut sein?
|
Re: Zugriff auf Ergebnis einer Strored Procedure in SQL
@mkinzler
Das war die Lösung. Manchmal sieht man den Wald ... Dank euch für diew schnelle Lösung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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 by Thomas Breitkreuz