READ RESULT SET (SQL)

Common Set-Syntax:

READ [(limit)] RESULT SET result-set INTO

VIEW view-name
parameter

FROM ddm-name
   [GIVING [:] sql-code]
END-RESULT

Extended Set-Syntax:

READ [(limit)] RESULT SET result-set INTO

VIEW view-name
parameter

FROM ddm-name
    [WITH INSENSITIVE SCROLL [:] scroll-hv]
   [GIVING [:] sql-code]
[WITH ROWSET POSITIONING FOR

[:] row_hv
integer

ROWS]
END-RESULT

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen

Siehe auch die folgenden Abschnitte in der Database Management System Interfaces-Dokumentation:


Funktion

Das SQL-Statement READ RESULT SET kann nur in Verbindung mit einem CALLDBPROC-Statement verwendet werden. Es dient dazu, eine Ergebnismenge zu lesen, der von einer mit einem vorhergehenden CALLDBPROC-Statement aufgerufenen Stored Procedure erzeugt wurde.

Einschränkung

Dieses Statement steht nur bei Natural for DB2 zur Verfügung.

Syntax-Beschreibung

Syntax-Element Beschreibung
limit
Limit-Option:

Sie können die Anzahl der zu lesenden Zeilen begrenzen. Sie können das Limit entweder als numerische Konstante (0 - 4294967295) oder als Variable mit Format N, P oder I angeben.

result-set
Ergebnismenge:

Als result-set geben Sie eine Result-Set-Locator-Variable an, die mit einem vorangehenden CALLDBPROC-Statement gefüllt wurde. result-set muss eine Variable von Format/Länge I4 sein.

Anmerkung:
Wenn zwischen dem CALLDBPROC-Statement und dem READ RESULT SET-Statement eine Syncpoint-Operation stattfand, kann das READ RESULT SET-Statement nicht mehr auf die Result Sets zugreifen.

INTO
INTO-Klausel:

Mit der INTO-Klausel geben Sie in dem Programm die Zielfelder an, die mit der Ergebnismenge gefüllt werden sollen.

Sie können mit der INTO-Klausel entweder einzelne Parameter oder eine oder mehrere Views angeben, und zwar so wie sie im DEFINE DATA-Statement definiert wurden.

VIEW view-name
VIEW-Klausel:

Als view-name geben Sie einen View an, dessen Felder die Spalten der Ergebnismenge aufnehmen, der durch die mit dem CALLDBPROC-Statement aufgerufene Stored Procedure erstellt wurden.

Die Anzahl der Spalten der Ergebnismenge muss der Anzahl der Felder entsprechen, die in dem View angegeben sind (dazu zählen keine Gruppenfelder, Redefinierungsfelder und Indikator-Felder).

parameter
Parameter:

Als Parameter geben Sie den Namen eines Feldes an, das eine Spalte der Ergebnismenge aufnimmt, der durch die mit dem CALLDBPROC-Statement aufgerufene Stored Procedure erstellt wurde.

FROM ddm-name
DDM-Name:

Als ddm-name geben Sie den Namen des DDMs an, das benutzt wird, um auf die Datenbank zuzugreifen, die die Stored Procedure ausführt.

Weitere Informationen siehe ddm-name.

WITH INSENSITIVE SCROLL [:] scroll_hv
WITH INSENSITIVE SCROLL-Klausel:

Diese Klausel gehört zum SQL Extended Set.

Mit dieser Klausel wird die Anwendung veranlasst, einen beliebig positionierbaren Insensitive Cursor zu verwenden, um auf die von der zuvor aufgerufenen Stored Procedure erstellte Ergebnismenge zuzugreifen. Damit diese Klausel verwendet werden kann, muss die Stored Procedure die Ergebnismenge mit einem positionierbaren Cursor erstellt haben. scroll_hv muss eine alphanumerische Natural-Variable sein, die die Scroll-Richtung enthält. scroll_hv wird bei jeder Ausführung der READ RESULT SET-Verarbeitungsschleife ausgewertet.

Wenn außerdem die Option GIVING sqlcode angegeben wird, bleibt die Verarbeitungsschleife auch dann geöffnet, wenn der SQLCODE +100 (Zeile nicht gefunden) von der RDBMS zurückgegeben wird.

Die Verabeitung wird beendet, wenn die Anwendung ein ESCAPE-Statement absetzt oder wenn der der SQLCODE +100 fünf Mal nacheinander auftritt, ohne dass eine Terminal-Ein-/Ausgabe erfolgt ist.

Wird die Option GIVING sqlcode nicht angegeben, so wird die Verabeitungsschleife beendet, wenn ein SQLCODE von der RDBMS zurückgeliefert wird, der ungleich 0 (erfolgreich) ist.

GIVING sqlcode
GIVING sqlcode-Klausel:

Mit dieser optionalen Klausel erhalten Sie den SQLCODE der SQL-FETCH-Operation, mit der die Ergebnismenge verarbeitet wurde.

Wenn Sie diese Option angeben und der SQLCODE der SQL-Operation ungleich 0 ist, wird keine Natural-Fehlermeldung ausgegeben. In diesem Fall muss die als Reaktion auf den SQLCODE-Wert auszuführende Handlung im aufrufenden Natural-Objekt programmiert werden.

Das Feld sqlcode muss eine Variable mit Format/Länge I4 sein.

Wenn Sie die Option GIVING sqlcode nicht verwenden, gibt Natural eine Fehlermeldung aus, falls der SQLCODE ungleich 0 ist.

WITH ROWSET POSITIONING FOR ... ROWS
WITH ROWSET POSITIONING FOR ... ROWS-Klausel:

Diese Klausel gehört zum SQL Extended Set.

Mit dieser Klausel wird die Anwendung veranlasst, mehrere Zeilen mit Daten aus der Ergebnismenge zu lesen, der von der zuvor aufgerufenen Stored Procedure erstellt worden ist. Die Variable integer oder :row_hv bestimmt die Anzahl der abgerufenen Zeilen.

Wenn außerdem die Option GIVING sqlcode angegeben wird, bleibt die Verarbeitungsschleife auch dann geöffnet, wenn der SQLCODE +100 (Zeile nicht gefunden) von der RDBMS zurückgegeben wird.

Die Verabeitung wird beendet, wenn die Anwendung ein ESCAPE-Statement absetzt oder wenn der der SQLCODE +100 fünf Mal nacheinander auftritt, ohne dass eine Terminal-Ein-/Ausgabe erfolgt ist.

Wird die Option GIVING sqlcode nicht angegeben, so wird die Verabeitungsschleife beendet, wenn ein SQLCODE von der RDBMS zurückgeliefert wird, der ungleich 0 (erfolgreich) ist.

END-RESULT
Ende des READ RESULT SET-Statement:

Das für Natural reservierte Schlüsselwort END-RESULT muss zum Beenden des READ RESULT SET-Statements verwendet werden.

Beispiel

Siehe Example of CALLDBPROC/READ RESULT SET im Abschnitt CALLDBPROC - SQL in der Natural for DB2-Dokumentation.