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-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (E-O)

 

NUMBER-Funktion [Verschiedene]

Erzeugt Zahlen, beginnend mit 1 für jede folgende Zeile in den Ergebnissen der Abfrage. Die NUMBER-Funktion ist hauptsächlich für den Einsatz in Auswahllisten (SELECT-Listen) vorgesehen.

Aufgrund der Einschränkungen, die von der NUMBER-Funktion vorgegeben werden (wie im untenstehenden Anschnitt 'Verwendung' beschrieben), sollten Sie stattdessen die ROW_NUMBER-Funktion [Verschiedene] verwenden. Die ROW_NUMBER-Funktion bietet dieselben Funktionalitäten wie die NUMBER-Funktion, aber ohne ihre Einschränkungen.

Syntax
NUMBER( * )
Rückgabe

INT

Bemerkungen

Sie können die Funktion NUMBER(*) in einer Auswahlliste verwenden, um eine aufsteigende Nummerierung der Zeilen in der Ergebnismenge zu bewirken. NUMBER(*) gibt den Wert der ANSI-Zeilennummer jeder Ergebniszeile zurück. Das bedeutet, dass die NUMBER-Funktion je nach der Art, wie die Anwendung durch die Ergebnismenge blättert, positive oder negative Werte zurückgeben kann. Für unempfindliche Cursor ist der Wert von NUMBER(*) immer positiv, weil die gesamte Ergebnismenge bei OPEN materialisiert wird.

Außerdem kann sich die Zeilennummer bei bestimmten Cursortypen ändern. Der Wert ist für unempfindliche Cursor und Scroll-Cursor fix. Wenn gleichzeitige Aktualisierungen vorkommen, kann sich der Wert für dynamische und empfindliche Cursor ändern.

Ein Syntaxfehler wird generiert, wenn Sie die NUMBER-Funktion in folgenden Zusammenhängen verwenden: In einer DELETE-Anweisung, einer WHERE-Klausel, einer HAVING-Klausel, einer ORDER BY-Klausel, einer Unterabfrage, einer Abfrage mit Aggregaten, einer Integritätsregel, einer GROUP BY-Klausel, einer DISTINCT-Klausel, einem Abfragenausdruck (UNION, EXCEPT, INTERSECT) oder einer abgeleiteten Tabelle.

NUMBER(*) kann (unter Berücksichtigung der oben genannten Einschränkungen) in einer Ansicht verwendet werden, die Ansichtsspalte, die dem Ausdruck entspricht, in dem NUMBER(*) enthalten ist, kann aber in einer Abfrage oder äußeren Ansicht nur einmal referenziert werden, und die Ansicht kann nicht als Nullwert-liefernde Tabelle in einem linken Outer-Join oder einem vollen Outer-Join benutzt werden.

In Embedded SQL sollte ein Cursor mit Vorsicht behandelt werden, der sich auf eine Abfrage bezieht, die eine NUMBER(*)-Funktion enthält. Diese Funktion gibt insbesondere dann negative Zahlen zurück, wenn ein Datenbankcursor mithilfe von "relativ" zum Ende des Cursors positioniert wird (eine absolute Position mit einem negativen Ausgangspunkt).

Sie können NUMBER im rechten Teil einer Zuordnung in der SET-Klausel einer UPDATE-Anweisung verwenden. Zum Beispiel, SET x = NUMBER(*).

Die NUMBER-Funktion kann auch verwendet werden, um Primärschlüssel zu generieren, wenn INSERT kombiniert mit einer SELECT-Anweisung verwendet wird (siehe INSERT-Anweisung), auch wenn normalerweise eine AUTOINCREMENT-Klausel benutzt wird, um sequenzielle Primärschlüssel zu erzeugen.

Hinweise zur AUTOINCREMENT-Klausel finden Sie unter CREATE TABLE-Anweisung.

Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Die folgende Anweisung gibt eine aufsteigend nummerierte Liste der Abteilungen (departments) zurück:

SELECT NUMBER( * ), DepartmentName
FROM Departments
WHERE DepartmentID > 5
ORDER BY DepartmentName;