TOP (Entity SQL)
La clausola SELECT può includere una sottoclausola TOP facoltativa dopo il modificatore ALL/DISTINCT facoltativo. La sottoclausola TOP specifica che verrà restituito solo il primo rowset del risultato della query.
Sintassi
[ TOP (n) ]
Argomenti
n
Espressione numerica che specifica il numero di righe da restituire. n
potrebbero essere un singolo valore letterale numerico o un singolo parametro.
Osservazioni:
L'espressione TOP deve essere un singolo valore letterale numerico o un singolo parametro. Se viene usato un valore letterale costante, il tipo del valore letterale deve essere implicitamente promuovibile a Edm.Int64 (byte, int16, int32 o int64 oppure qualsiasi tipo di provider mappato a un tipo promuovibile a Edm.Int64) e il suo valore deve essere maggiore o uguale a zero. In caso contrario, viene generata un'eccezione. Se come espressione viene usato un parametro, anche il tipo di parametro deve essere implicitamente promuovibile a Edm.Int64, ma non verrà eseguita alcuna convalida effettiva del valore del parametro durante la compilazione in quanto per i valori dei parametri viene usata l'associazione tardiva.
Di seguito è illustrato un esempio di espressione TOP costante.
select distinct top(10) c.a1, c.a2 from T as a
Di seguito è illustrato un esempio di espressione TOP con parametri:
select distinct top(@topParam) c.a1, c.a2 from T as a
L'espressione TOP non è deterministica, a meno che la query non venga ordinata. Se è necessario un risultato deterministico, usare le sottoclausole SKIP e LIMIT nella clausola ORDER BY . TOP e SKIP/LIMIT si escludono a vicenda.
Esempio
Nella query Entity SQL seguente viene usato TOP per specificare la riga superiore da restituire dal risultato della query. La query è basata sul modello Sales di AdventureWorks. Per compilare ed eseguire questa query, effettuare le operazioni seguenti:
Seguire la procedura indicata in How to: Execute a Query that Returns StructuralType Results.
Passare la query seguente come argomento al metodo
ExecuteStructuralTypeQuery
:SELECT VALUE TOP(1) contact FROM AdventureWorksEntities.Contacts AS contact