TOP (Entity SQL)

Der SELECT-Klausel kann hinter dem optionalen ALL/DISTINCT-Modifizierer eine TOP-Unterklausel angefügt werden. Die TOP-Unterklausel gibt an, dass nur der erste Zeilensatz aus dem Abfrageergebnis zurückgegeben wird.

Syntax

[ TOP (n) ]

Argumente

n Der numerische Ausdruck, der die Anzahl der zurückzugebenden Zeilen angibt. n könnte ein einzelnes numerisches Literal oder ein einzelner Parameter sein.

Bemerkungen

Beim TOP-Ausdruck muss es sich entweder um ein einzelnes numerisches Literal oder um einen einzelnen Parameter handeln. Wenn ein konstantes Literal verwendet wird, muss der Literaltyp implizit zu „Edm.Int64“ heraufstufbar sein („byte“, „int16“, „int32“ oder „int64“ oder ein Anbietertyp, der einem zu „Edm.Int64“ heraufstufbaren Typ zugeordnet wird) und über einen Wert verfügen, der größer oder gleich null ist. Andernfalls wird eine Ausnahme ausgelöst. Wird ein Parameter als Ausdruck verwendet, muss der Parametertyp ebenfalls implizit zu „Edm.Int64“ heraufstufbar sein. Es wird jedoch während der Kompilierung keine Überprüfung des tatsächlichen Parameterwerts durchgeführt, da die Parameterwerte spät gebunden werden.

Im Folgenden finden Sie ein Beispiel für einen konstanten TOP-Ausdruck:

select distinct top(10) c.a1, c.a2 from T as a

Im Folgenden finden Sie ein Beispiel für einen parametrisierten TOP-Ausdruck:

select distinct top(@topParam) c.a1, c.a2 from T as a

Wenn die Abfrage nicht sortiert ist, ist TOP nicht deterministisch. Wenn ein deterministisches Ergebnis benötigt wird, sollte die SKIP -Unterklausel und die LIMIT -Unterklausel in der ORDER BY -Klausel verwendet werden. TOP und SKIP/LIMIT schließen sich gegenseitig aus.

Beispiel

Die folgende Entity SQL-Abfrage verwendet TOP, um die oberste Zeile, die vom Abfrageergebnis zurückgegeben werden soll, anzugeben. Diese Abfrage beruht auf dem "AdventureWorks Sales"-Modell. Führen Sie folgende Schritte aus, um diese Abfrage zu kompilieren und auszuführen:

  1. Verwenden Sie das Verfahren unter How to: Execute a Query that Returns StructuralType Results.

  2. Übergeben Sie die folgende Abfrage als Argument an die ExecuteStructuralTypeQuery -Methode:

    SELECT VALUE TOP(1) contact FROM AdventureWorksEntities.Contacts AS contact
    

Siehe auch