Transact-SQL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Marius~itwiki (discussione | contributi)
aggiunta
m Categorie
 
(39 versioni intermedie di 26 utenti non mostrate)
Riga 1:
{{Linguaggio di programmazione
{{T|lingua=inglese|argomento=informatica|data=dicembre 2007}}
[[id:|nome = 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]].
|immagine =
|didascalia =
|autore = [[Microsoft]], [[Sybase]]
|data =
|versione =
|utilizzo =
|paradigmi =
|tipizzazione =
|specifiche =
|estensione =
|influenzato_da =
|ha_influenzato =
|implementazione_riferimento =
|sistema_operativo =
|lingua =
|licenza =
|sito_web =
}}
AIn [[informatica]] '''Transact-SQL''' (a volte abbreviato con T-SQL '''TransactT-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]].
 
Transact-SQL espandeEspande le prestazioni di SQL aggiungendo:
* Funzioni per [[Struttura di controllo|controllo di flusso]];
* Possibilità di definire [[variabile (informatica)|variabili]] locali.
* Varie funzioni per la manipolazione di [[stringa (informatica)|stringhe]], date, espressioni matematiche.
* Miglioramento delle [[istruzione (informatica)|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 <code>BEGIN</code> e <code>END</code>, <code>BREAK</code>, <code>CONTINUE</code>, <code>GOTO</code>, <code>IF</code> e <code>ELSE</code>, <code>RETURN</code>, <code>WAITFOR</code>, e <code>WHILE</code>.
 
<code>IF</code> e <code>ELSE</code> consentono l'esecuzione [[struttura di controllo|condizionale]] di blocchi di istruzioni. Il [[batch]] che segue stampa "giorno festivo" se la data corrente è Sabatosabato o Domenicadomenica, oppure "giorno feriale" negli altri casi.
 
<pre>
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
PRINT 'ÉÈ un giorno festivo.'
ELSE
PRINT 'ÉÈ un giorno feriale.'
</pre>
 
Line 25 ⟶ 44:
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
Line 41 ⟶ 60:
<code>BREAK</code> provoca l'uscita da un loop che inizia con un <code>WHILE</code>, mentre <code>CONTINUE</code> fa eseguire il ciclo successivo del loop. Più avanti è riportato un esempio di loop <code>WHILE</code>.
 
== Variabili locali ==
 
Le variabili locali sono accessibili solo allo [[script]] che le utilizza. Transact-SQL non supporta variabili globali definite dall'utente.
 
<code>DECLARE</code> 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 <code>WHILE</code> per eseguire un loop.
Line 66 ⟶ 85:
DECLARE @ContaArticoli INT
SELECT @ContaArticoli = COUNT(*) FROM Articoli
 
INSERT INTO SizeLog (OrarioDiVerifica, ContaArticoli ) VALUES (GETDATE(), @ContaArticoli )
</pre>
 
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 recordrighe e l'orario corrente.
 
==Changes toIstruzioni DELETE ande UPDATE statementsampliate ==
<!--
In Transact-SQL, alle istruzioni DELETE e UPDATE può essere aggiunta un'opzione <code>FROM</code> che permette il collegamento ad altre tabelle mediante una <code>JOIN</code>. Nell'esempio che segue vengono cancellati tutti i record della tabella 'Utenti' che sono stati marcati con il flag 'Idle'.
 
==Changes to DELETE and UPDATE statements==
In Transact-SQL, both the DELETE and UPDATE statements allow a FROM clause to be added which allows joins to be included.
 
This example delete all <CODE>users</CODE> who have been flagged with the 'Idle' flag.
<PRE>
DELETE usersUtenti
FROM usersUtenti as u
JOIN user_flagsUtenti_flags as f
ON u.id=f.id
WHERE f.name = 'Idle'
</PRE>
 
==Criticism Critiche ==
{{citazione necessaria|Secondo 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 [[Programmazione dichiarativa|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 [[Programmazione imperativa|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.}}
Critics of Transact-SQL say that not only do the additional features break compatibility with standard SQL, but they also break the discrete modular scope which SQL was intended to occupy as an exclusively [[declarative programming|declarative]] language (up until the 1999 version of the [[SQL]] standard). In other words, the additional functionality found in Transact-SQL would, according to the original concept of SQL, have been implemented with a separate [[imperative programming]] language and [[Embedded SQL]], and it muddies the waters when flow control, for example, may be implemented either in a programming language layer or in SQL itself.
 
== Voci correlate ==
-->
* [[Microsoft SQL Server]]
 
* [[PL/SQL]]
==Voci correlate==
* [[Microsoft SQL Server]]
*[[PL/SQL]]
*[[SQL]]
 
==Collegamenti esterni==
*{{en}}[http://msdn2.microsoft.com/en-us/library/aa260642(SQL.80).aspx Transact-SQL Reference for SQL Server 2000 (MSDN)]
*{{en}}[http://msdn2.microsoft.com/en-us/library/ms189826.aspx Transact-SQL Reference for SQL Server 2005 (MSDN)]
*{{en}}[http://manuals.sybase.com/onlinebooks/group-as/asg1250e/refman ASE Reference Manual]
*{{en}}[http://devguru.com/technologies/t-sql/ DevGuru T-SQL Quick Reference]
 
== Collegamenti esterni ==
* {{en}}[cita web|http://msdn2.microsoft.com/en-us/library/aa260642(SQL.80).aspx |Transact-SQL Reference for SQL Server 2000 (MSDN)]|lingua=en}}
* {{en}}[cita web|http://msdn2.microsoft.com/en-us/library/ms189826.aspx |Transact-SQL Reference for SQL Server 2005 (MSDN)]|lingua=en}}
* {{cita web|1=http://manuals.sybase.com/onlinebooks/group-as/asg1250e/refman|2=ASE Reference Manual|lingua=en|accesso=14 dicembre 2007|urlarchivio=https://web.archive.org/web/20070810113825/http://manuals.sybase.com/onlinebooks/group-as/asg1250e/refman/|dataarchivio=10 agosto 2007|urlmorto=sì}}
* {{cita web|1=http://devguru.com/technologies/t-sql/|2=DevGuru T-SQL Quick Reference|lingua=en|accesso=14 dicembre 2007|urlarchivio=https://web.archive.org/web/20070713231204/http://devguru.com/technologies/t-sql/|dataarchivio=13 luglio 2007|urlmorto=sì}}
 
{{Principali linguaggi di programmazione}}
 
[[Categoria:Linguaggi di programmazioneSQL]]
[[Categoria:Database]]
[[Categoria:Software per base dati]]
 
[[de:Transact SQL]]
[[en:Transact SQL]]
[[id:Transact-SQL]]
[[ja:Transact-SQL]]
[[ru:Transact-SQL]]