venerdì 10 febbraio 2017

Creare un array in sql server

Tags

Mi è capitato di recente di dover creare un array su sql server, quindi ora vi spiegherò come ho affrontato questa necessità.

Premesso che è una cosa che può essere fatta in diversi modi, ecco il metodo che ho utilizzato io per sfogliare un array temporaneo su sql server.
La cosa funziona ovviamente all'interno di una stored procedure / funzione, richiamabile da una qualsiasi query sql.

Come creare un array in sql server


Per poter creare una sorta di array sql server, basta usare le tabelle temporanee.
Una tabella temporanea sql infatti, consente di agire come in un classico array a più dimensioni, inserendo, cancellando, ordinando e controllando l'esistenza dei dati inseriti al suo interno.

Vediamo subito un esempio pratico.

DECLARE @anagrafica TABLE (codice_fiscale VARCHAR(16),nome VARCHAR(20),cognome VARCHAR(20))

DECLARE @cfisc AS VARCHAR(16),@cfisccontr AS VARCHAR(16)
SET @cfisc='1234567890123456'
SET @cfisccontr=''
DECLARE cursore CURSOR FOR
SELECT codice_fiscale FROM @anagrafica WHERE codice_fiscale=@cfisc
OPEN cursore
FETCH NEXT FROM cursore INTO @cfisccontr
CLOSE cursore
DEALLOCATE cursore
IF @cfisccontr<>''
BEGIN
    PRINT 'Valore già esistente nell array'
    END
ELSE
    BEGIN
    INSERT @anagrafica (codice_fiscale,nome,cognome) VALUES (@cfisccontr,'Pippo','Franco')
    PRINT 'Nuovo valore inserito nell array'
END


La prima riga dell'esempio è quella più importante, dove viene definita la nostra tabella temporanea che fa da array sql server.

Poi si può fare un po' quello che si vuole.
Nell'esempio ho fatto un finto controllo sull'esistenza di un codice fiscale nella tabella temporanea (vuota), e quindi ho aggiunto una riga all'array.
Inserendo questo codice in un loop ad esempio, si può usare questo array tabella per controllare l'esistenza di doppioni, ed agire di conseguenza.

Ovviamente, popolando la tabella array sql server, è possibile anche ordinarla, proprio come si farebbe con un array tradizionale.

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon