Alcuni esempi di come sia possibile sfruttare le istruzioni di controllo del flusso offerte da T-SQL:

SET QUOTED_IDENTIFIER OFF

SET NOCOUNT ON

GO

declare @test varchar(40)

select @test = “mio testo”

if @test = “mio testo”

begin

print “@test contiene le parole ‘mio testo'”

end

else

begin

print “@test non contiene le parole ‘mio testo'”

end

declare @conta int

select @conta = 0

while @conta < 5

begin

select @conta = @conta + 1

print “Conteggio –> ” + convert(varchar(5),@conta)

end

Attraverso l’istruzione ALTER TABLE è possibile aggiungere una chiave primaria ad una tabella che abbiamo già creato in precedenza. Ogni volta che viene creata una PK in questo modo SQL server aggiunge in modo automatico un indice associato alla PK (attenzione di default l’indice è CLUSTERED):

BEGIN TRAN

USE pubs

ALTER TABLE MioTest

ADD CONSTRAINT PK_MioTest

PRIMARY KEY (ID)

COMMIT TRAN

Attraverso una stored procedure di sistema dal nome sp_password, possiamo facilmente cambiare le password alle nostre login:

/*

EXEC = esegue la procedura

*/

EXEC sp_password @old = “vecchiapassword”, @new = “nuovapassword”, @loginame = “miologin”

Durante la programmazione capiterà certamente la necessità di ordinare i dati di query SQL in modo crescente o decrescente.

Si pensi, ad esempio, di dover creare un output di lista nominativi. Ordinarli per nome, ne faciliterebbe la lettura.

In SQL è molto semplice effettuare l’ordinamento. Infatti basta aggiungere, in fondo alla stringa SQL, il parametro ORDER BY indicando di seguito il nome del campo con cui ordinare la query.

Questa query SQL:

SELECT * FROM utenti ORDER BY nome

ordina gli utenti per nome in modo crescente.

E’ possibile ordinare anche in modo decrescente utilizzando:

‘Ordino in modo decrescente

SELECT * FROM utenti ORDER BY nome DESC

Una delle potenzialità maggiori del T-SQL è la manipolazione delle variabili all’interno delle nostre procedure, possiamo manipolare, svuotare e riempire le nostre variabili a piacimento, anche all’interno di istruzioni SQL standard:

USE pubs

GO

— Dichiariamo una variabile @cognome

DECLARE @cognome VARCHAR(255)

— Inseriamo un nuovo record nella tabella authors

INSERT INTO authors VALUES (

‘123-45-6789’,

‘Pippo’,

‘Pipponi’,

‘555 123-1234’,

‘Via dei Tigli 12’,

‘……….’,

‘CA’,

‘12345’,

1 )

–Visualizziamo il cognome appena inserito

SELECT au_fname as [Cognome inserito] FROM authors WHERE au_id = ‘123-45-6789’

–Ora aggiorniamo il cognome con Plutoni invece di Pipponi

UPDATE authors SET @cognome = au_fname = ‘Plutoni’ WHERE au_id = ‘123-45-6789’

— Questo è il contenuto della variabile cognome: @cognome = au_fname = ‘Plutoni’

SELECT au_fname as [Cognome aggiornato] FROM authors WHERE au_id = ‘123-45-6789’

— Adesso cancelliamo il record che abbiamo appena updatato

DELETE FROM authors WHERE au_fname = @cognome

— ora nella tabella authors il record è tato eliminato ma….

SELECT au_fname as [Cognome aggiornato] FROM authors WHERE au_id = ‘123-45-6789’

— Ecco il contenuto della varibile @cognome, anche se il record è stato eliminato

SELECT @cognome as [Contenuto della variabile @cognome]

Dalla versione 7 di SQL Server è possibile usare una istruzione per alterare una stored procedure, ALTER, molto utile per apportare modifiche alle nostre procedure senza doverle ricompilare nuovamente:

USE TEMPDB

GO

ALTER PROCEDURE SP__TEST AS

SELECT * FROM MANAGEMENT WHERE ID > 0

/*

Ovviamente in questo esempio la procedura è inventata

*/