Paginazione con una Stored Procedure di SQL Server

di Daniele Bochicchio, in Database,

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
https://www.aspitalia.com/liste/usag/script.aspx?ID=396

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

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi