Transact-SQL
A volte abbreviato con T-SQL Transact-SQL è l'estensione proprietaria del linguaggio SQL sviluppata da Microsoft e Sybase. La versione di Microsoft viene fornita insieme a Microsoft SQL Server. Sybase utilizza questo linguaggio in Adaptive Server Enterprise, il successore di Sybase SQL Server.
Transact-SQL espande le prestazioni di SQL aggiungendo:
- Funzioni per controllo di flusso
- Possibilità di definire variabili locali.
- Varie funzioni per la manipolazione di stringhe, date, espressioni matematiche.
- Miglioramento delle istruzioni DELETE e UPDATE.
Controllo di flusso e struttura del linguaggio
Fra le keyword con cui Transact-SQL implementa il controllo di flusso si annoverano BEGIN
e END
, BREAK
, CONTINUE
, GOTO
, IF
e ELSE
, RETURN
, WAITFOR
, e WHILE
.
IF
e ELSE
consentono l'esecuzione condizionale di blocchi di istruzioni. Il batch che segue stampa "giorno festivo" se la data corrente è Sabato o Domenica, oppure "giorno feriale" negli altri casi.
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1 PRINT 'É un giorno festivo.' ELSE PRINT 'É un giorno feriale.'
BEGIN
e END
delimitano un blocco di istruzioni. Se più istruzioni devono essere controllate dalle condizioni illustrate nel precedente esempio, si possono usare BEGIN e END in questo modo:
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1 BEGIN PRINT 'É un giorno festivo.' PRINT 'Prenditi una vacanza!' END ELSE BEGIN PRINT 'É un giorno feriale.' PRINT 'Va a lavorare!' END
WAITFOR
aspetta per un certo lasso di tempo, oppure fino ad una data ora del giorno. Questa istruzione può essere usata per eseguire azioni ritardate oppure per bloccare l'esecuzione di un'operazione prima di raggiungere un determinato istante.
RETURN
è usata per uscire immediatamente da una stored procedure oppure da una certa funzione.
BREAK
provoca l'uscita da un loop che inizia con un WHILE
, mentre CONTINUE
fa eseguire il ciclo successivo del loop. Più avanti è riportato un esempio di loop WHILE
.
Variabili locali
Le variabili locali sono accessibili solo allo script che le utilizza. Transact-SQL non supporta variabili globali definite dall'utente.
DECLARE
dichiara una variabile, attribuendole un nome ed un tipo. Per attribuirle un valore si usa SET, e successivamente la variabile può essere usata utilizzandone il nome come riferimento.
Questo script dichiara una variabile come intero, la inizializza, e poi usa un WHILE
per eseguire un loop.
DECLARE @Contatore INT SET @Contatore = 10 WHILE @Contatore > 0 BEGIN PRINT 'Numero cicli: ' + CONVERT(VARCHAR(10), @Contatore ) SET @Contatore = @Contatore - 1 END
All'interno del loop viene stampato un messaggio che include il valore corrente della variabile, dopo di che il contatore viene decrementato di uno.
Una variabile può essere inizializzata anche direttamente come risultato di un'istruzione:
DECLARE @ContaArticoli INT SELECT @ContaArticoli = COUNT(*) FROM Articoli INSERT INTO SizeLog (OrarioDiVerifica, ContaArticoli ) VALUES (GETDATE(), @ContaArticoli )
Qui, ad esempio, si legge il numero di righe contenute nella tabella 'Articoli', poi si aggiunge alla tabella 'SizeLog' una riga contenente il numero di righe e l'orario corrente.
Voci correlate
Collegamenti esterni
- (EN) Transact-SQL Reference for SQL Server 2000 (MSDN)
- (EN) Transact-SQL Reference for SQL Server 2005 (MSDN)
- (EN) ASE Reference Manual
- (EN) DevGuru T-SQL Quick Reference