Firebird Documentation IndexFirebird 2.5 SprachreferenzProzedurale SQL-Anweisungen (PSQL) → Gespeicherte Prozeduren
Firebird Home Firebird Home Zurück: Elemente der PSQLFirebird Documentation IndexNach oben: Prozedurale SQL-Anweisungen (PSQL)Weiter: Gespeicherte Funktionen (Stored Functions)

Gespeicherte Prozeduren

Inhaltsverzeichnis

Vorteile von gespeicherten Prozeduren
Varianten der gespeicherten Prozeduren
Erstellen einer gespeicherte Prozedur
Anpassen einer gespeicherte Prozedur
Löschen einer gespeicherte Prozedur

Eine gespeicherte Prozedur ist ein Programm, das in den Datenbankmetadaten zur Ausführung auf dem Server gespeichert ist. Eine gespeicherte Prozedur kann durch gespeicherte Prozeduren (einschließlich sich selbst), Trigger und Clientanwendungen aufgerufen werden. Eine Prozedur, die sich selbst aufruft, heißt rekursiv.

Vorteile von gespeicherten Prozeduren

Gespeicherten Prozeduren besitzen die folgenden Vorteile:

  1. Modularität—Anwendungen, die mit der Datenbank arbeiten, können die gleiche gespeicherte Prozedur verwenden, wodurch die Größe des Anwendungscodes reduziert wird und eine Codeduplizierung vermieden wird.
  2. Vereinfachte Anwendungsunterstützung—Wenn eine gespeicherte Prozedur geändert wird, werden Änderungen sofort allen Host-Anwendungen angezeigt, ohne dass sie bei unveränderten Parametern neu kompiliert werden müssen.
  3. Verbesserte Leistung—Da gespeicherte Prozeduren auf einem Server statt auf dem Client ausgeführt werden, wird der Netzwerkverkehr reduziert, wodurch die Leistung verbessert wird.

Varianten der gespeicherten Prozeduren

Firebird untertützt zwei Arten der gespeicherten Prozeduren: executable (ausführbar) selectable (abfragbar).

Ausführbare Prozeduren

Ausführbare Prozeduren ändern normalerweise Daten in einer Datenbank. Sie können Eingabeparameter empfangen und einen einzigen Satz von Ausgabeparametern (RETURNS) zurückgeben. Sie werden mit der Anweisung EXECUTE PROCEDURE aufgerufen. Siehe auch ein Beispiel für eine ausführbare gespeicherte Prozedur am Ende des Abschnitts CREATE PROCEDURE von Kapitel 5.

Abfragbare Prozeduren

Abfragbare bzw. auswählbare gespeicherte Prozeduren rufen normalerweise Daten aus einer Datenbank ab und geben eine beliebige Anzahl von Zeilen an den Aufrufer zurück. Der Aufrufer erhält die Ausgabe Zeile für Zeile aus einem Zeilenpuffer, der von der Datenbank-Engine darauf vorbereitet wird.

Auswählbare Prozeduren können nützlich sein, um komplexe Datensätze zu erhalten, die mit regulären DSQL SELECT-Abfragen oft nicht oder nur schwer oder zu langsam abgerufen werden können. Typischerweise iteriert diese Art der Prozedur durch einen Schleifenprozess des Extrahierens von Daten, wobei sie möglicherweise transformiert wird, bevor die Ausgangsvariablen (Parameter) bei jeder Iteration der Schleife mit frischen Daten gefüllt werden. Eine SUSPEND-Anweisung am Ende der Iteration füllt den Puffer und wartet darauf, dass der Aufrufer die Zeile abfragt. Die Ausführung der nächsten Iteration der Schleife beginnt, wenn der Puffer gelöscht wurde.

Auswählbare Prozeduren können Eingabeparameter haben, und der Ausgabesatz wird durch die Klausel RETURNS im Header angegeben.

Eine wählbare gespeicherte Prozedur wird mit einer SELECT-Anweisung aufgerufen. Siehe auch ein Beispiel für eine abfragbare gespeicherte Prozedur am Ende des Abschnitts CREATE PROCEDURE von Kapitel 5.

Erstellen einer gespeicherte Prozedur

Die Syntax zum Erstellen ausführbarer gespeicherter Prozeduren und wählbarer gespeicherter Prozeduren ist exakt gleich. Der Unterschied liegt in der Logik des Programmcodes.

Syntax (partiell): 

CREATE PROCEDURE procname
[(<inparam> [, <inparam> ...])]
[RETURNS (<outparam> [, <outparam> ...])]
AS
[<declarations>]
BEGIN
[<PSQL_statements>]
END
        

Der Header einer gespeicherten Prozedur muss den Prozedurnamen enthalten und muss unter den Namen gespeicherter Prozeduren, Tabellen und Ansichten eindeutig sein. Es kann auch einige Ein- und Ausgabeparameter definieren. Eingabeparameter werden nach dem Prozedurnamen in Klammern angegeben. Ausgabeparameter, die für auswählbare Prozeduren obligatorisch sind, sind innerhalb einer Klausel RETURNS eingeklammert.

Das letzte Element im Header (oder das erste Element im Textkörper, abhängig von Ihrer Ansicht darüber, wo die Grenze liegt) umfasst eine oder mehrere Deklarationen von lokalen Variablen und / oder benannten Cursorn die Ihre Prozedur möglicherweise erfordert.

Nach den Deklarationen folgt der Hauptblock BEGIN ... END, der den PSQL-Code der Prozedur beschreibt. Innerhalb dieses Blocks könnten PSQL- und DML-Anweisungen, Ablaufsteuerungsblöcke, Sequenzen anderer BEGIN ... END-Blöcke einschließlich eingebetteter Blöcke sein. Blöcke, einschließlich des Hauptblocks, können leer sein und die Prozedur wird trotzdem kompiliert. Es ist nicht ungewöhnlich, ein Verfahren in Stufen aus einem Gliederung zu entwickeln.

Weitere Informationen zum Erstellen gespeicherter Prozeduren:  Siehe auch CREATE PROCEDURE in Kapitel 5, Data Definition (DDL) Statements.

Anpassen einer gespeicherte Prozedur

Eine vorhandene gespeicherte Prozedur kann geändert werden, um die Sätze von Ein- und Ausgabeparametern und alles im Prozedurhauptteil zu ändern.

Syntax (partiell): 

ALTER PROCEDURE procname
[(<inparam> [, <inparam> ...])]
[RETURNS (<outparam> [, <outparam> ...])]
AS
[<declarations>]
BEGIN
[<PSQL_statements>]
END
        

Weitere Informationen zum Ändern gespeicherter Prozeduren:  Siehe auch ALTER PROCEDURE, CREATE OR ALTER PROCEDURE, RECREATE PROCEDURE, in Kapitel 5, Data Definition (DDL) Statements.

Löschen einer gespeicherte Prozedur

Die Anweisung DROP PROCEDURE wird verwendet um gespeicherte Prozeduren zu löschen.

Syntax (vollständig): 

DROP PROCEDURE procname;
        

Weitere Informationen zum Löschen gespeicherter Prozeduren:  See DROP PROCEDURE in Kapitel 5, Data Definition (DDL) Statements.

Zurück: Elemente der PSQLFirebird Documentation IndexNach oben: Prozedurale SQL-Anweisungen (PSQL)Weiter: Gespeicherte Funktionen (Stored Functions)
Firebird Documentation IndexFirebird 2.5 SprachreferenzProzedurale SQL-Anweisungen (PSQL) → Gespeicherte Prozeduren