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 » Ergebnisse aus Prozeduren zurückgeben

 

Ergebnismengen von Prozeduren zurückgeben

Mit Ergebnismengen kann eine Prozedur mehr als eine Zeile mit Ergebnissen an die aufrufende Umgebung zurückgeben.

Die folgende Prozedur gibt eine Liste von Kunden, die Bestellungen aufgegeben haben sowie den Gesamtwert der aufgegebenen Bestellungen zurück. Die Prozedur listet Kunden nicht auf, die keine Bestellungen aufgegeben haben.

CREATE PROCEDURE ListCustomerValue()
RESULT ("Company" CHAR(36), "Value" INT)
BEGIN
   SELECT CompanyName,
      CAST( sum(  SalesOrderItems.Quantity *
                  Products.UnitPrice)
                  AS INTEGER ) AS value
   FROM Customers
      INNER JOIN SalesOrders
      INNER JOIN SalesOrderItems
      INNER JOIN Products
   GROUP BY CompanyName
   ORDER BY value DESC;
END;
  • Geben Sie folgende Anweisung ein:

    CALL ListCustomerValue ( );
Company Value
The Hat Company 5016
The Igloo 3564
The Ultimate 3348
North Land Trading 3144
Molly's 2808
... ...
Hinweise
  • Die Anzahl der Variablen in der RESULT-Liste muss der Anzahl der Elemente auf der Auswahlliste entsprechen. Automatische Datentypkonvertierung erfolgt, wenn die Datentypen nicht zusammenpassen und die Konvertierung zulässig ist.

  • Die RESULT-Klausel ist Teil der Anweisung CREATE PROCEDURE, und hat keinen Befehlsbegrenzer.

  • Die Namen der Elemente der Auswahlliste müssen nicht zu denen der RESULT-Liste passen.

  • Wenn diese Prozedur getestet wird, zeigt Interactive SQL standardmäßig nur die erste Ergebnismenge an. Sie können Interactive SQL so konfigurieren, dass mehr als eine Ergebnismenge angezeigt wird, indem Sie im Fenster Optionen auf dem Register Ergebnisse die Option Mehrere Ergebnismengen zeigen aktivieren.

  • Sie können die Ergebnismengen von Prozeduren verändern, wenn sie nicht aus einer Ansicht generiert werden. Der Benutzer, der die Prozedur aufruft, muss die entsprechenden Berechtigungen für die Basistabelle haben, damit er Ergebnisse von Prozeduren ändern kann. Dies unterscheidet sich von den üblichen Berechtigungen für das Ausführen von Prozeduren, bei der Prozedureigentümer die Berechtigung für die Tabelle benötigen. Weitere Hinweise finden Sie unter Ergebnismengen in Interactive SQL bearbeiten.

  • Wenn eine gespeicherte Prozedur oder benutzerdefinierte Funktion eine Ergebnismenge zurückgibt, kann sie keine Ausgabeparameter setzen oder Rückgabewerte zurückgeben.