Transact-SQL
In informatica Transact-SQL (a volte abbreviato con T-SQL) è l'estensione proprietaria del linguaggio SQL sviluppata da Microsoft e Sybase. La versione di Microsoft viene fornita insieme a Microsoft SQL Server, mentre Sybase utilizza questo linguaggio in Adaptive Server Enterprise, il successore di Sybase SQL Server. Espande le prestazioni di SQL aggiungendo:
Controllo di flusso e struttura del linguaggioFra le keyword con cui Transact-SQL implementa il controllo di flusso si annoverano
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1 PRINT 'È un giorno festivo.' ELSE PRINT 'È un giorno feriale.'
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
Variabili localiLe variabili locali sono accessibili solo allo script che le utilizza. Transact-SQL non supporta variabili globali definite dall'utente.
Questo script dichiara una variabile come intero, la inizializza, e poi usa un 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. Istruzioni DELETE e UPDATE ampliateIn Transact-SQL, alle istruzioni DELETE e UPDATE può essere aggiunta un'opzione DELETE Utenti FROM Utenti as u JOIN Utenti_flags as f ON u.id=f.id WHERE f.name = 'Idle' CriticheSecondo i critici le nuove funzionalità di Transact-SQL non soltanto rompono la compatibilità con il linguaggio SQL standard, ma contraddicono anche l'assunto secondo cui SQL è concepito per essere un linguaggio di tipo esclusivamente dichiarativo (come effettivamente era, almeno fino alla versione standard del 1999 di SQL). In altre parole, le funzionalità aggiuntive di Transact-SQL sarebbero state implementate introducendo di fatto un vero e proprio nuovo linguaggio di tipo imperativo, con una soluzione confusa e poco lineare, quando invece, secondo i critici, le medesime funzionalità sarebbero potute essere implementate utilizzando un altro layer di programmazione, oppure mediante lo stesso SQL.[senza fonte] Voci correlateCollegamenti esterni
|
Portal di Ensiklopedia Dunia