#565 - Paginazione con una Stored Procedure di SQL Server

ADO supporta, attraverso l'oggetto Recordset, la paginazione di una query, ovvero la suddivisione dei risultati in un numero tale da consentire una facile visualizzazione a video.
Sfruttando SQL Server è possibile effettuare questa suddivisione già sul database, fornendo quindi i risultati esatti (dal record X al record Y) ed evitando quindi di inviare tutti i record estratti dalla query.
Si tratta di una semplice Stored Procedure che usa una tabella temporanea, di appoggio, per inserire una chiave all'interno di questa tabella, all'interno della quale un campo IDENTITY farà da identificativo dell'ordine di inserimento.
Alla fine si tratta di unire la tabella di origine con quella che contiene gli ID ordinati e filtrare in base al camp RowID, che indica la posizione del record.

CREATE PROCEDURE GetSearch_Paging (
  @what nvarchar(50),
  @PageIndex int,
  @PageSize int
) AS

-- ricavo gli estremi inferiore e superiore
-- la prima pagina è 1
DECLARE @Upper int
DECLARE @Lower int
SET @Lower = @PageSize * (@PageIndex - 1)
SET @Upper = @Lower + @PageSize


-- tabella temporanea
CREATE TABLE #Paging
(
  RowID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  OriginalID int NOT NULL
)

-- inserisco la chiave della tabella in quella di appoggio
INSERT INTO #Paging(OriginalID)
  SELECT ID FROM tabella WHERE campo LIKE '%' + @what + '%'

-- estraggo i dati dalle due tabelle
SELECT t.* FROM #Paging p, tabella t
  WHERE
  p.OriginalID = t.ID AND
  p.RowID >= @Lower AND p.RowID <= @Upper

GO

Per approfondimenti sull'uso delle stored procedure si veda:
#396 - Utilizzare l'oggetto recordset con le stored procedure di SQL Server
http://www.aspitalia.com/liste/usag/script.aspx?ID=396

#397 - Utilizzare le stored procedure di SQL Server con ASP.NET
http://www.aspitalia.com/liste/usag/script.aspx?ID=397


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Peter_Pan scrive:
#565 - Paginazione con una Stored Procedure di SQL Server

Ma non potreste mettere un esempio? Ho provato questa store ma dove devo inserire il nome della tabella che deve usare per fare la paginazione?? e in ...
giovedì 23 dicembre 2004 | 2 risposte
torin.it scrive:
#565 - Paginazione con una Stored Procedure di SQL Server

Ciao a tutti. La domanda che vorrei porvi riguarda in parte questo script:nello script si utilizza una tabella di appoggio #p per salvare i dati ...
martedì 20 aprile 2004 | 3 risposte

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC