SELECT ORDERED-Anweisung (select_ordered_statement:_searched)
Die SELECT ORDERED-Anweisung (
select_ordered_statement:_searched ) 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 Angabe von Schlüsselwerten und Indexwerten festgelegt.Syntax
<select_ordered_statement:_searched> ::=
<select_ordered_format1:_searched> | <select_ordered_format2:_searched>
<select_ordered_format1:_searched> ::= SELECT <FIRST | LAST> <select_column>,...
INTO <parameter_spec>,... FROM <table_name>
[<pos_spec>] [<where_clause>] [<lock_option>]
<select_ordered_format2:_searched> ::= SELECT <NEXT | PREV> <select_column>,...
INTO <parameter_spec>,... FROM <table_name>
[<index_pos_spec>] KEY <key_spec>,... [<where_clause>] [<lock_option>]
<pos_spec> ::= INDEX <column_name> | INDEXNAME <index_name>
| <index_pos_spec> [KEY <key_spec>,...] | KEY <key_spec>,...
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. Für Tabellen, die ohne Schlüsselspalten definiert wurden, gibt es eine implizit angelegte Spalte SYSKEY CHAR(8) BYTE, die einen vom Datenbanksystem generierten Schlüssel enthält. Die Tabellenspalte SYSKEY kann daher in der SELECT ORDERED-Anweisung zum positionierenden Zugriff auf eine bestimmte Tabellenzeile verwendet werden. In einer Tabelle entspricht die durch aufsteigende Werte von SYSKEY definierte Ordnung der Einfügereihenfolge in die Tabelle.
Der Standpunkt innerhalb der Tabelle kann explizit durch die Angabe der Indexpositionsspezifikation und der Schlüsselspezifikationen (
key_spec ) angegeben werden. Es braucht keine Zeile der Tabelle zu geben, die die Standpunktwerte enthält.FIRST | LAST
FIRST (LAST) bewirkt in der geordneten Tabelle die Suche nach der ersten (letzten) Zeile, die die angegebene
WHERE-Bedingung erfüllt und 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, die die angegebene WHERE-Bedingung erfüllt. Wenn keine WHERE-Bedingung angegeben ist, ist das Ergebnis die entsprechend der Ordnung und des Standpunktes nächste 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. Dieser Zustand wird durch eine Warnung angezeigt.Weitere Informationen
Der Benutzer muß das SELECT-Privileg für die ausgewählten Spalten oder für die ganze Tabelle besitzen.
Die SELECT ORDERED-Anweisung steht für View-Tabellen, die durch SELECT DISTINCT definiert wurden oder denen mehr als eine Basistabelle zugrundeliegt, nicht zur Verfügung.
Der Spaltenname in der Positionsspezifikation (
pos_spec ) muß eine indizierte Spalte bezeichnen.Im interaktiven Betrieb kann
INTO <parameter spec>,... entfallen.Die Angabe einer
LONG-Spalte in einer selektierten Spalte ( select_column ) ist nur in der obersten Folge von selektierten Spalten in einer SELECT ORDERED-Anweisung zulässig.Die
LOCK-Option bestimmt, welche Sperre auf die gelesene Zeile gesetzt wird.Ergebnis
Wenn 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 die angegebene Tabelle keine Zeile enthält, die die angegebenen Bedingungen erfüllt, wird die Rückmeldung
100 – Zeile nicht gefunden ausgegeben, und den in den Parameterspezifikationen angegebenen Parametern werden keine Werte zugewiesen.Siehe auch:
SELECT ORDERED-Anweisung (select_ordered_statement:_positioned)