4 messaggi dal 03 maggio 2001
Salve,
gironzolando sulla rete ho trovato questa stored procedure per effettuare query paginate.
In particolare questa stored riceve una query generica e preleva tramite un cursore lato server solo l'intervallo che ci interessa. In questo modo possiamo decidere di scaricare il peso della paginazione sul DBMS.
La cosa in sè è carina e funziona pure, ma ovviamente presenta un difetto:

La stored (se eseguita nel query analyzer produce come esito due gruppi di risultati:
Un set vuoto e uno pieno con i dati previsti.

Ovviamente il problema sorge quando voglio effettuare il retrieving di qusti dati tramite un recordset o un dataset. Infatti nell'operazione di binding viene scaricato nel recordset il primo set di dati (quello vuoto) e non il secondo.

Avete idea di come risolvere il problema?

Grazie
Paolo

Di seguito la stored:


CREATE PROCEDURE spSQLServerSideCursor
(
@SQLStringa varchar(800) = '',
@PageSize int = 20,
@CurrentPage int = 1
)
AS
DECLARE @SqlStatement nvarchar(1000)

SET @SqlStatement=@SQLStringa

-- Stabilisco qual è il primo record della pagina
DECLARE @FirstRecordPosition int
SET @FirstRecordPosition = (@PageSize * (@CurrentPage - 1)) + 1

-- Dichiaro e uso il cursore dinamico
DECLARE @CursorID int
DECLARE @ScrollOpt int
DECLARE @CCOpt int
DECLARE @RowCount int
SET @ScrollOpt = 4
SET @CCOpt = 1
SET @RowCount = -1
EXEC sp_cursoropen @CursorID OUT, @SqlStatement, @ScrollOpt output,
@CCOpt output, @RowCount output
EXEC sp_cursorfetch @CursorID ,32, @FirstRecordPosition, @PageSize
EXEC sp_cursorclose @CursorID
RETURN



GO

Paolo
2.410 messaggi dal 13 febbraio 2003
Contributi
a livello di performance la soluzione non è molto accettabile se ne parlava proprio oggi di evitare l'utilizzo dei cursori sul ng di sql

Un consiglio hai provato a simulare l'opzione limit??
http://blogs.aspitalia.com/cp/post520.aspx
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
Christian è uno attento (oltre che attivo) a tutto quello che succede nel newsgroup microsoft.public.it.sql ed è per questo che ti suggerisce di non usare i cursori... :-)

Solo a titolo di esempio ti cito questo thread

http://www.google.it/groups?hl=it&lr=&selm=%23ZX0nXnsCHA.1628%40TK2MSFTNGP10

risalente ad un po di tempo fa. E' soltanto uno dei tanti che puoi trovare in tema di paginazione ma in grado di aiutarti a risolvere il tuo problema evitando l'uso dei cursori...

Bye

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.