1060: Die Zeilenanzahl in der TOP-Klausel muss einer ganzen Zahl entsprechen.
Fehlermeldung:
Meldung 1060, Ebene 15, Status 1, Zeile 1
Die Zeilenanzahl in der TOP-Klausel muss einer ganzen Zahl entsprechen.
Ebene:
15.
Beschreibung:
Diese Fehlermeldung taucht auf beim Versuch, eine TOP() Klausel mit einem Ausdruck aufzurufen, der nicht zu einer positiven Ganzzahl ausgewertet werden kann.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 15 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Der TOP Ausdruck muß in einen Ausdruck modifiziert werden, der als positive Ganzzahl ausgewertet werden kann.
Versionen:
Alle Versionen von SQL Server. Die TOP Klausel mit Angabe einer Variablen ist erst ab SQL Server 2005 verfügbar.
Beispiel(e):
(Microsoft SQL Server 2005):
SELECT TOP(10.5) *
FROM Northwind.dbo.Orders
(Microsoft SQL Server 2000):
SELECT TOP 10.5 *
FROM Northwind.dbo.Orders
Anmerkungen:
Vom logischen Standpunkt her macht alles andere als die Angabe einer Ganzzahl in Verbindung mit TOP überhaupt keinen Sinn. Wie soll der Bruchteil einer Zeile aussehen? Was soll das sein? Daher wird dieser Fehler in solchen Fällen ausgelöst.
Wie allerdings der Forumthread zu dieser Fehlermeldung zeigt, unterscheidet SQL Server zwischen TOP x und TOP x PERCENT. Verwendet man die PERCENT Angabe, so sind durchaus Dezimalzahlen in der TOP Klausel erlaubt und werden haben auch ein entsprechendes Einfluß auf die Ergebnismenge. So liefern zum Beispiel:
SELECT TOP(10.5) PERCENT * FROM Northwind.dbo.Orders
SELECT TOP(11) PERCENT * FROM Northwind.dbo.Orders
SELECT TOP(10) PERCENT * FROM Northwind.dbo.Orders
unterschiedlich viele Zeilen zurück.