SELECT ORDERED-Anweisung (select_ordered_statement:_positioned)
Die SELECT ORDERED-Anweisung (
select_ordered_statement:_positioned ) selektiert in einer geordneten Tabelle die erste oder letzte Zeile, oder bezüglich eines Standpunktes die nachfolgende oder vorangehende Zeile. Die Ordnung ist durch einen Schlüssel oder einen Index definiert. Der Standpunkt wird durch eine Cursorposition festgelegt.Syntax
<select_ordered_statement:_positioned> ::=
<select_ordered_format1:_positioned> | <select_ordered_format2:_positioned>
<select_ordered_format1:_positioned> ::=
SELECT <FIRST | LAST> <select_column>,... INTO <parameter_spec>,...
FROM <table_name> [INDEX <column_name> | INDEXNAME <index_name>]
WHERE CURRENT OF <result_table_name> [<lock_option>]
| SELECT <FIRST | LAST> <select_column>,... INTO <parameter_spec>,...
FROM <table_name> [index_pos_spec]
WHERE CURRENT OF <result_table_name> [<lock_option>]
<select_ordered_format2:_positioned> ::=
SELECT <NEXT | PREV> <select_column>,...INTO <parameter_spec>,...
FROM <table_name> [<index_pos_spec>]
WHERE CURRENT OF <result_table_name> [<lock_option>]
Erläuterung
Diese SELECT ORDERED-Anweisung dient dazu, auf die anhand einer durch den Schlüssel oder durch einen Sekundärschlüssel definierten Ordnung erste oder letzte Zeile bzw. von einem angegebenen Standpunkt aus auf die nachfolgende oder vorangehende Zeile zuzugreifen.
Die Ergebnistabelle muß mit FOR UPDATE angegeben worden sein.
Der Benutzer muß das SELECT-Privileg für die ausgewählten Spalten oder für die ganze Tabelle besitzen.
Der Tabellenname in der SELECT ORDERED-Anweisung muß mit dem Tabellennamen in der
FROM-Klausel der QUERY-Anweisung übereinstimmen, die die Ergebnistabelle erzeugt hat.Der Standpunkt innerhalb der Tabelle ist durch die optionale Indexpositionsspezifikation und durch einen Schlüsselwert definiert, wobei der Schlüsselwert durch die Cursorposition bestimmt ist.
FIRST | LAST
FIRST (LAST) bewirkt in der geordneten Tabelle die Suche nach der ersten (letzten) Zeile, die bezüglich der Ordnung größer (kleiner) oder gleich dem Standpunkt ist.
NEXT | PREV
NEXT (PREV) bewirkt vom angegebenen Standpunkt aus die Suche in aufsteigender (absteigender) Ordnung nach der nächsten Zeile.
Einspaltiger Index
Wenn ein Indexname durch
INDEX <column_name> oder INDEXNAME <index_name> oder eine Indexpositionsspezifikation angegeben ist, und der zugehörige Index einspaltig ist, dann werden für die SELECT ORDERED-Anweisung die Zeilen, die in der indizierten Spalte NULL-Werte aufweisen, nicht beachtet. In diesem Fall kann das Ergebnis der SELECT ORDERED-Anweisung niemals eine Zeile sein, die in der indizierten Spalte einen NULL-Wert aufweist.Weitere Informationen
Im interaktiven Betrieb kann
INTO <parameter_spec>,... entfallen.Der Spaltenname (
column_name ) muß eine indizierte Spalte bezeichnen.Die
LOCK-Option bestimmt, welche Sperre auf die gelesene Zeile gesetzt wird.Die Angabe einer
LONG-Spalte in einer selektierten Spalte ( select_column ) ist nur in der obersten Folge von selektierten Spalten in dieser SELECT ORDERED-Anweisung zulässig.Ergebnis
Wenn der Cursor auf einer Zeile der Ergebnistabelle steht, und eine Zeile gefunden wurde, die die angegebenen Bedingungen erfüllt, werden den Parametern die korrespondierenden Spaltenwerte zugewiesen. Für die Zuweisungen der Werte gelten die bei der
FETCH-Anweisung aufgeführten Regeln.Wenn der Cursor nicht auf einer Zeile der Ergebnistabelle steht, wird eine Fehlermeldung ausgegeben, und den in den Parameterspezifikationen angegebenen Parametern werden keine Werte zugewiesen.
Siehe auch:
SELECT ORDERED-Anweisung (select_ordered_statement:_searched)