mercoledì 6 dicembre 2023

SQL SERVER - Utilizzare un cursore per processare ogni riga di una tabella

 Per "ciclare" all'interno dei dati di una tabella (ad esempio, per eseguire uno script per ogni voce della tabella), si utilizzano i cursori.

Il modo corretto per non avere due "fetch" nel codice è usare un "ciclo infinito" WHILE.

Ecco un esempio per recuperare (e utilizzare) il nome di tutte le tabelle (non di sistema) presenti:

SELECT  *
DECLARE @tblName NVARCHAR(255)

-- creazione del cursore
DECLARE tbl_cur CURSOR FOR
SELECT  TABLE_NAME
FROM    [DB_NAME].INFORMATION_SCHEMA.TABLES
WHERE   TABLE_SCHEMA = 'dbo'

-- gestione del cursore
OPEN tbl_cur

WHILE 1 = 1
BEGIN
    FETCH NEXT FROM tbl_cur
    INTO @tblName

    IF @@FETCH_STATUS <> 0
        BREAK

    -- esecuzione comandi
    SELECT 1
END

-- chiusura del cursore
CLOSE tbl_cur
DEALLOCATE tbl_cur

Nessun commento:

Posta un commento