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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top