Die CALL-Anweisung ruft eine Prozedur auf, die zuvor mit einer CREATE PROCEDURE-Anweisung erstellt wurde. Wenn die Prozedur
abgeschlossen ist, werden sämtliche INOUT- oder OUT-Parameterwerte zurück kopiert.
Die Argumentliste kann nach Position oder durch die Verwendung von Schlüsselwörtern angegeben werden. Die Argumente stimmen
mit dem entsprechenden Parameter in der Parameterliste für die Prozedur hinsichtlich Position überein (DEFAULT kann für optionale
Parameter verwendet werden). Bei Angabe nach Schlüsselwörtern werden den Argumenten die benannten Parameter zugeordnet.
Prozedurargumenten können in der CREATE PROCEDURE-Anweisung Standardwerte zugewiesen werden, und fehlenden Parametern wird
der Standardwert zugeordnet. Falls kein Standardwert gesetzt und kein Argument angegeben sind, wird ein Fehler ausgegeben.
Innerhalb einer Prozedur kann eine CALL-Anweisung in einer DECLARE-Anweisung verwendet werden, wenn die Prozedur Ergebnismengen
zurückgibt.
Unterabfragen und räumliche Methodenaufrufe sind nicht zulässig als Argumente für eine gespeicherte Prozedur in einer CALL-Anweisung.
Mit der RETURN-Anweisung können Prozeduren einen Ganzzahlwert zurückgeben (zum Beispiel als Zustandsindikator). Sie können
diesen Rückgabewert in einer Variablen speichern, indem Sie das Gleichheitszeichen als Zuordnungsoperator verwenden:
Wenn die aufgerufene Prozedur INT zurückgibt und der Wert NULL ist, wird der Fehlerstatus, Wert 0, anstelle dessen zurückgegeben.
Es gibt keine Möglichkeit, zwischen diesem Fall und dem Fall zu unterscheiden, bei dem tatsächlich ein Wert 0 zurückgegeben
wird.
Hinweis
Diese Anweisung zum Aufrufen einer Funktion wird nicht mehr empfohlen. Wenn Sie eine Funktion aufrufen und das Ergebnis einer
Variablen zuordnen möchten, verwenden Sie eine Zuordnungsanweisung. Beispiel:
SQL/2008
Kernfunktion. Die Verwendung der RETURN-Anweisung zum Zurückgeben eines Werts aus einer gespeicherten Prozedur ist eine
Erweiterung des Herstellers. SQL/2008 unterstützt die Rückgabe von Werten nur für durch SQL aufgerufene Funktionen, nicht
für Prozeduren. Die Standardwerte für Argumente gespeicherter Prozeduren werden in SQL/2008 nicht unterstützt.
Die ShowCustomers-Prozedur wird aufgerufen. Diese Prozedur hat keine Parameter und gibt eine Ergebnismenge zurück.
CALL ShowCustomers();
Das folgende Interactive SQL-Beispiel erstellt eine Prozedur, welche die Anzahl der erteilten Aufträge eines Kunden mit vorgegebener
Kennung zurückgibt, eine Variable erstellt, um das Ergebnis aufzunehmen, die Prozedur aufruft und das Ergebnis anzeigt.
CREATE PROCEDURE OrderCount (IN customer_ID INT, OUT Orders INT)
BEGIN
SELECT COUNT(SalesOrders.ID)
INTO Orders
FROM Customers
KEY LEFT OUTER JOIN SalesOrders
WHERE Customers.ID = customer_ID;
END
go
-- Create a variable to hold the result
CREATE VARIABLE Orders INT
go
-- Call the procedure, FOR customer 101
CALL OrderCount ( 101, Orders )
go
-- Display the result
SELECT Orders FROM DUMMY
go