Firebird Documentation IndexFirebird 2.5 SprachreferenzStatements der Data Manipulation Language (DML) → EXECUTE PROCEDURE
Firebird Home Firebird Home Zurück: MERGEFirebird Documentation IndexNach oben: Statements der Data Manipulation Language (DML)Weiter: EXECUTE BLOCK

EXECUTE PROCEDURE

Inhaltsverzeichnis

Ausführbare“ gespeicherte Prozedur

Verwendet für:  Ausführen einer gespeicherten Prozedur

Verfügbar in: DSQL, ESQL, PSQL

Syntax: 

EXECUTE PROCEDURE procname
   [<inparam> [, <inparam> ...]] | [(<inparam> [, <inparam> ...])]
   [RETURNING_VALUES <outvar> [, <outvar> ...] | (<outvar> [, <outvar> ...])]

<outvar> ::= [:]varname
          

Tabelle 6.16. Argument der EXECUTE PROCEDURE-Statement-Parameter

Argument Beschreibung
procname Name der gespeicherten Prozedur
inparam Ein Ausdruck, der den deklarierten Datentyp eines Eingabeparameters auswertet
varname Eine PSQL-Variable zum Empfangen des Rückgabewerts


Beschreibung: Führt eine ausführbare gespeicherte Prozedur aus, die eine Liste aus einem oder mehreren Eingabeparametern verwendet, wenn sie für die Prozedur definiert sind, und eine einreihige Menge von Ausgabewerten zurückgibt, wenn sie für die Prozedur definiert sind.

Ausführbare“ gespeicherte Prozedur

Das Statement EXECUTE PROCEDURE wird am häufigsten verwendet, um die Art gespeicherte Prozedur aufzurufen, die geschrieben wird, um eine datenmodifizierende Aufgabe auf der Serverseite auszuführen—das sind die Prozeduren, die kein SUSPEND-Statement im Code enthalten. Sie können so entworfen werden, dass sie eine Ergebnismenge zurückgeben, die nur aus einer Zeile besteht, die normalerweise über eine Gruppe von RETURNING_VALUES()-Variablen an eine andere gespeicherte Prozedur übergeben wird, die sie aufruft. Clientschnittstellen verfügen normalerweise über einen API-Wrapper, der beim Aufruf von EXECUTE PROCEDURE in DSQL die Ausgabewerte in einen einzeiligen Puffer abrufen kann.

Das Aufrufen der anderen Prozedurart—eine „auswählbare“— ist möglich mit EXECUTE PROCEDURE, aber es gibt nur die erste Zeile eines Ausgabesatzes zurück, der fast sicher als mehrzeilig ausgelegt ist. Auswählbare gespeicherte Prozeduren werden von einer Anweisung SELECT aufgerufen, die eine Ausgabe erzeugt, die sich wie eine virtuelle Tabelle verhält.

Hinweise

  • In PSQL und DSQL können Eingabeparameter beliebige Ausdrücke sein, die in den erwarteten Typ aufgelöst werden.

  • Obwohl nach dem Namen der gespeicherten Prozedur keine Klammern erforderlich sind, um die Eingabeparameter zu umschließen, wird ihre Verwendung aus Gründen einer guten Verwaltung empfohlen.

  • Wenn Ausgabeparameter in einer Prozedur definiert wurden, kann die Klausel RETURNING_VALUES in PSQL verwendet werden, um sie über eine Liste zuvor deklarierter Variablen abzurufen, die mit den definierten Ausgabeparametern in Reihenfolge, Datentyp und Nummer übereinstimmen.

  • Die Liste der RETURNING_VALUES kann optional in runde Klammern gesetzt werden und ihre Verwendung wird empfohlen.

  • Wenn DSQL-Anwendungen EXECUTE PROCEDURE mithilfe der Firebird-API oder eines Wrappers aufrufen, wird ein Puffer für den Empfang der Ausgabezeile vorbereitet, und die Klausel RETURNING_VALUES wird nicht verwendet.

Beispiele: 

In PSQL mit optionalen Doppelpunkten und ohne optionale Klammern:

EXECUTE PROCEDURE MakeFullName
  :FirstName, :MiddleName, :LastName
  RETURNING_VALUES :FullName;
          

In Firebirds Befehlszeilenprogramm isql mit Literalparametern und optionalen Klammern:

EXECUTE PROCEDURE MakeFullName ('J', 'Edgar', 'Hoover');
          

Hinweis: In isql, wird RETURNING_VALUES nicht verwendet. Alle Ausgabewerte werden von der Anwendung erfasst und automatisch angezeigt.

Ein PSQL-Beispiel mit Ausdrucksparametern und optionalen Klammern:

EXECUTE PROCEDURE MakeFullName
  ('Mr./Mrs. ' || FirstName, MiddleName, upper(LastName))
  RETURNING_VALUES (FullName);
          

Zurück: MERGEFirebird Documentation IndexNach oben: Statements der Data Manipulation Language (DML)Weiter: EXECUTE BLOCK
Firebird Documentation IndexFirebird 2.5 SprachreferenzStatements der Data Manipulation Language (DML) → EXECUTE PROCEDURE