Hallo,
gibt es eine Möglichkeit einen Block rekursiv aufzurufen?
Also z.B.
execute block ?NAME? (
INPUT int = ?
)
returns (
OUTPUT int;
)
as
begin
if (...) then begin
:INPUT = :INPUT+1;
execute block ?NAME?(:INPUT); # DER BLOCK WIEDER SELBST AUFRUFEN
end
else begin
...
end
end
gruß
haba
Rekursiver Block
Moderator: thorben.braun
- martin.koeditz
- Beiträge: 500
- Registriert: Sa 31. Mär 2018, 14:35
Hallo haba,
nein. Rekursionen kannst du nutzen, wenn du aus deinem Block eine Prozedur erstellst. Dann würde das funktionieren.
Der Block selbst fasst ja nur eine Menge Anweisungen zusammen und führt diese aus, ist selbst aber nicht in der DB gespeichert. Eine Prozedur hingegen hat eine "Aufrufadresse", die rekursiv genutzt werden kann.
Gruß
Martin
nein. Rekursionen kannst du nutzen, wenn du aus deinem Block eine Prozedur erstellst. Dann würde das funktionieren.
Der Block selbst fasst ja nur eine Menge Anweisungen zusammen und führt diese aus, ist selbst aber nicht in der DB gespeichert. Eine Prozedur hingegen hat eine "Aufrufadresse", die rekursiv genutzt werden kann.
Gruß
Martin
Martin Köditz
SynDesk SW GmbH
SynDesk SW GmbH
Hallo Haba,
ja, es ist möglich, einen Block in sich selbst rekursiv aufzurufen. In deinem Beispiel scheint die Syntax an SQL oder einer ähnlichen Datenbankabfragesprache zu erinnern. Beachte jedoch, dass die genaue Syntax je nach der verwendeten Datenbank abweichen kann.
Hier ist eine angepasste Version deines Codes, der einen Block rekursiv aufruft:
sql
Copy code
execute block ?NAME? (
INPUT int = ?
)
returns (
OUTPUT int;
)
as
begin
if (...) then
begin
:INPUT = :INPUT + 1;
-- Hier wird der Block rekursiv aufgerufen
execute block ?NAME? (:INPUT) returns (OUTPUT int) as
begin
-- Weitere Logik für den rekursiven Aufruf
OUTPUT = :INPUT * 2; -- Beispielhaft, hier kannst du deine Logik einfügen
end;
end
else
begin
-- Weitere Logik für den Basisfall
OUTPUT = :INPUT;
end
end
Dies ist jedoch nur ein allgemeines Beispiel, da die genaue Syntax von der verwendeten Datenbank abhängt. Stelle sicher, dass du die Dokumentation deiner spezifischen Datenbank konsultierst, um die korrekte Syntax für rekursive Blockaufrufe zu finden.
Viel Erfolg! Wenn du weitere Hilfe benötigst oder weitere Informationen bereitstellen kannst, stehe ich zur Verfügung.
ja, es ist möglich, einen Block in sich selbst rekursiv aufzurufen. In deinem Beispiel scheint die Syntax an SQL oder einer ähnlichen Datenbankabfragesprache zu erinnern. Beachte jedoch, dass die genaue Syntax je nach der verwendeten Datenbank abweichen kann.
Hier ist eine angepasste Version deines Codes, der einen Block rekursiv aufruft:
sql
Copy code
execute block ?NAME? (
INPUT int = ?
)
returns (
OUTPUT int;
)
as
begin
if (...) then
begin
:INPUT = :INPUT + 1;
-- Hier wird der Block rekursiv aufgerufen
execute block ?NAME? (:INPUT) returns (OUTPUT int) as
begin
-- Weitere Logik für den rekursiven Aufruf
OUTPUT = :INPUT * 2; -- Beispielhaft, hier kannst du deine Logik einfügen
end;
end
else
begin
-- Weitere Logik für den Basisfall
OUTPUT = :INPUT;
end
end
Dies ist jedoch nur ein allgemeines Beispiel, da die genaue Syntax von der verwendeten Datenbank abhängt. Stelle sicher, dass du die Dokumentation deiner spezifischen Datenbank konsultierst, um die korrekte Syntax für rekursive Blockaufrufe zu finden.
Viel Erfolg! Wenn du weitere Hilfe benötigst oder weitere Informationen bereitstellen kannst, stehe ich zur Verfügung.
In meiner Tätigkeit als Freiberufler im Bereich Business-Analyse fungiere ich als Berater für diverse Unternehmen unterschiedlicher Branchen. Meine Expertise erstreckt sich über verschiedene Schwerpunkte, darunter Power BI, Python und VBA-Programmierung.
...und das ist, was man bekommt, wenn man eine KI fragt.Wordi hat geschrieben: Fr 29. Dez 2023, 10:35 Stelle sicher, dass du die Dokumentation deiner spezifischen Datenbank konsultierst, um die korrekte Syntax für rekursive Blockaufrufe zu finden.
--
Joachim
Joachim
Es hieß ja auch früher schon:
Frage jemanden, der sich damit auskennt.
Was man nicht gelernt hat, kann man auch nicht weitergeben.
Insofern hat die KI ja wieder recht: "Frage jemanden, der sich damit auskennt."
Frage jemanden, der sich damit auskennt.
Was man nicht gelernt hat, kann man auch nicht weitergeben.
Insofern hat die KI ja wieder recht: "Frage jemanden, der sich damit auskennt."
