Die RESULT-Klausel ist bei Prozeduren optional. Wenn Sie die RESULT-Klausel auslassen, können Sie Prozeduren schreiben, die je nach Art ihrer Ausführung unterschiedliche Ergebnismengen mit unterschiedlichen Anzahlen oder Typen von Spalten zurückgeben.
Wenn Sie die Funktion der variablen Ergebnismengen nicht benutzen, sollten Sie aus Performancegründen eine RESULT-Klausel programmieren.
Beispiel: Die folgende Prozedur gibt zwei Spalten zurück, wenn die Eingabevariable Y ist, sonst nur eine:
CREATE PROCEDURE Names( IN formal char(1) ) BEGIN IF formal = 'y' THEN SELECT Surname, GivenName FROM Employees ELSE SELECT GivenName FROM Employees END IF END; |
Die Verwendung von variablen Ergebnismengen in Prozeduren unterliegt je nach der Schnittstelle, die von der Clientanwendung benutzt wird, bestimmten Beschränkungen.
Embedded SQL Um die richtige Form der Ergebnismenge zu erhalten, müssen Sie mit DESCRIBE den Prozeduraufruf beschreiben, nachdem der Cursor für die Ergebnismenge geöffnet wurde, aber bevor Zeilen zurückgegeben werden.
Wenn Sie eine Prozedur ohne RESULT-Klausel erstellen und die Prozedur eine variable Ergebnismenge zurückgibt, kann ein DESCRIBE einer SELECT-Anweisung mit Verweis auf die Prozedur fehlschlagen. Um das Fehlschlagen des DESCRIBE-Vorgangs zu verhindern, ist es empfehlenswert, eine WITH-Klausel in die FROM-Klausel der SELECT-Anweisung einzubeziehen. Alternativ können Sie die WITH VARIABLE RESULT-Klausel in der DESCRIBE-Anweisung verwenden. Mithilfe der WITH VARIABLE RESULT-Klausel kann ermittelt werden, ob der Prozeduraufruf nach jeder OPEN-Anweisung beschrieben werden sollte.
ODBC Prozeduren mit variablen Ergebnismengen können von ODBC-Anwendungen verwendet werden. Der SQL Anywhere ODBC-Treiber führt die richtige Beschreibung der variablen Ergebnismengen aus.
Open Client-Anwendungen Open Client-Anwendungen können Prozeduren mit variablen Ergebnismengen verwenden. SQL Anywhere führt die richtige Beschreibung der variablen Ergebnismengen aus.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |