Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren und Trigger » Prozeduren, Trigger und Batches verwenden » Der Aufbau von Prozeduren und Triggern

 

Parameter für Prozeduren deklarieren

Prozedurparameter werden als Liste in der Anweisung CREATE PROCEDURE übergeben. Parameternamen müssen den Regeln für andere Datenbankbezeichner, wie z.B. Spaltennamen, entsprechen. Sie müssen einen gültigen Datentyp haben, (siehe SQL-Datentypen), und es kann ihnen eines der folgenden Schlüsselwörter vorangehen: IN, OUT oder INOUT. Standardmäßig sind Parameter INOUT-Parameter. Diese Schlüsselwörter haben folgende Bedeutungen:

  • IN   Das Argument ist ein Ausdruck, der für die Prozedur einen Wert bereitstellt.

  • OUT   Das Argument ist eine Variable, der von der Prozedur ein Wert verliehen werden kann.

  • INOUT   Das Argument ist eine Variable, die der Prozedur einen Wert liefert, und deren Wert von der Prozedur geändert werden kann.

Sie können Prozedurparametern in der Anweisung CREATE PROCEDURE Standardwerte verleihen. Der Standardwert muss eine Konstante, darf aber auch NULL sein. Beispiel: Die folgende Prozedur benutzt NULL als Standardwert für einen IN-Parameter, damit nicht eine Abfrage ausgeführt wird, die keinen Sinn ergibt:

CREATE PROCEDURE CustomerProducts(
      IN customer_ID
                  INTEGER DEFAULT NULL )
RESULT ( product_ID INTEGER,
         quantity_ordered INTEGER )
BEGIN
   IF customer_ID IS NULL THEN
      RETURN;
   ELSE
      SELECT    Products.ID,
               sum( SalesOrderItems.Quantity )
        FROM   Products,
                 SalesOrderItems,
               SalesOrders
      WHERE SalesOrders.CustomerID = customer_ID
      AND SalesOrders.ID = SalesOrderItems.ID
      AND SalesOrderItems.ProductID = Products.ID
      GROUP BY Products.ID;
   END IF;
END;

Die folgende Anweisung weist den Standardwert NULL zu, und die Prozedur führt eine Rückgabe durch, anstatt die Abfrage auszuführen.

CALL CustomerProducts();