Seite 1 von 1

Rekursiver Block

Verfasst: Di 19. Dez 2023, 12:35
von HABA
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

Re: Rekursiver Block

Verfasst: Di 19. Dez 2023, 13:40
von martin.koeditz
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

Re: Rekursiver Block

Verfasst: Fr 29. Dez 2023, 10:35
von Wordi
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.

Re: Rekursiver Block

Verfasst: Mo 22. Jan 2024, 09:25
von jhoehne
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.
...und das ist, was man bekommt, wenn man eine KI fragt.

Re: Rekursiver Block

Verfasst: Mo 22. Jan 2024, 13:31
von bfuerchau
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." :lol: