Funzioni definite dall'utente SQL: recupero di TOP n record in una funzione definita dall'utente
-
08-07-2019 - |
Domanda
Come mai non funziona quanto segue?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
Voglio solo essere in grado di specificare il numero di risultati da restituire. [SQL Server 2000.]
Grazie!
Soluzione
Per MS SQL 2000, è possibile utilizzare:
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
SET ROWCOUNT @top
RETURN SELECT * FROM SomeTable
Altri suggerimenti
Il supporto per questo è stato aggiunto a SQL Server 2005, ma non è disponibile nel 2000. Dovresti invece usare (shudder) dynamic sql o qualche altro trucco numerico.
Test CREATE FUNCTION (@top integer)
TABELLA DEI RESI
AS
INVIO
SELEZIONA INIZIO (@top) * DA SomeTable
GO
Tuttavia, senza una clausola ORDER BY non è molto significativo (l'ordine dei risultati non è garantito).
Spiacenti, una variabile TOP non è disponibile in SQL Server 2000. Né Dynamic SQL è supportato in nessuna versione.
Jake, prova a impostare il conteggio delle righe sul parametro della tua funzione e poi fai la selezione. Non ho provato questo, YMMV.
Da: http: // msdn .microsoft.com / en-us / library / aa259189 (SQL.80) .aspx
La sintassi
SET ROWCOUNT { number | @number_var }
Arguments
number | @number_var
È il numero (un numero intero) di righe da elaborare prima di interrompere la query specificata.