Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

TIP [MS-SQL 2000] – Cursori

Digital Innovation Partner

TIP [MS-SQL 2000] – Cursori

L’uso dei cursori nella scrittura di procedure è spesso un’attività da evitare il più possibile, considerando che l’implementazione dei cursori non è molto omogenea tra un DB Server e l’altro, di conseguenza potrebbe limitare la portabilità del vs sviluppo da un db ad un altro. Inoltre se un operazione è fattibile tramite istruzioni standard SQL è anche generalmete più efficiente dell’uso dei cursori. A volte tale attività si rende indispensabile e ciò implicherà che nel porting dell’applicazione su un’altro Db dovrete controllare di nuovo il codice relativo alla parte con i cursori.Nell’esempio che segue implementiamo una banale stored procedure per Ms-Sql Server che tramite l’ausilio di un cursore vi permetterà di effettuare delle operazioni riga per riga di un tabella.

/* CREAZIONE PROCEDURA */
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS
ON GO

CREATE  proc <nome procedura> as DECLARE @variabile_1 ‘tipo_variabile’;
DECLARE @variabile_2 <tipo_variabile>
/* DEFINIZIONE/CREAZIONE CURSORE */

DECLARE <nome_cursore>
CURSOR FOR
SELECT <nome_campo1>,<nome_campo_n>
FROM <nome_tabella>

/* ATTIVAZIONE CURSORE CURSORE
OPEN <nome_cursore>

/* LETTURA DEI DATI TRAMITE CURSORE */

FETCH NEXT FROM
<nome_cursore> INTO @variabile_1,@variabile_n
WHILE @@FETCH_STATUS =0  
/* @@FETCH_STATUS <– INTERNAL CONTROLLA LO STATO DEL CURSORE PER LA PROC IN ESECUZIONE */< /EM
>
BEGIN print ‘valore variabile “1” per la riga corrente : ‘   print @variabile_1   print ‘valore variabile “n” per la riga corrente : ‘

print @variabile_n
FETCH NEXT
FROM <nome_cursore>  INTO @variabile_1,
@variabile_n
END
CLOSE <nome_cursore >DEALLOCATE <nome_cursore>
/* IMPORTANTE LIBERA MSSQL DAL CURSORE ALLOCATO*/
GO
SET QUOTED_IDENTIFIER OFF
GO
SET

ANSI_NULLS ON
GO

/* *************************** FINE CODICE ESEMPIO  ********************* */

Lascia un commento