Transact-SQL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
nuovo stub da en.wiki |
m Categorie |
||
(52 versioni intermedie di 27 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
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 =
}}
▲
* 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 ==
<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 è sabato o domenica, oppure "giorno feriale" negli altri casi.
▲Keywords for flow control in Trancent-SQL include <code>BEGIN</code> and <code>END</code>, <code>BREAK</code>, <code>CONTINUE</code>, <code>GOTO</code>, <code>IF</code> and <code>ELSE</code>, <code>RETURN</code>, <code>WAITFOR</code>, and <code>WHILE</code>.
<pre>
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
PRINT '
ELSE
PRINT '
</pre>
<code>BEGIN</code> e <code>END</code> 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:
<pre>
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
BEGIN
PRINT '
PRINT '
END
ELSE
BEGIN
PRINT '
PRINT '
END
</pre>
<code>WAITFOR</code> 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.
<code>RETURN</code>
<code>BREAK</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>
<pre>
DECLARE @
SET @
WHILE @
BEGIN
PRINT '
SET @
END
</pre>
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:
<pre>
DECLARE @
SELECT @
INSERT INTO SizeLog (
▲INSERT INTO SizeLog (SampleTime, ArticleCount) VALUES (GETDATE(), @ArticleCount)
</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 righe e l'orario corrente.
==
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'.
<PRE>
DELETE
FROM
JOIN
ON u.id=f.id
WHERE f.name = 'Idle'
</PRE>
==
{{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.}}
*[[Microsoft SQL Server]]▼
*[[PL/SQL]]▼
*[[SQL]]▼
*[http://msdn2.microsoft.com/en-us/library/aa260642(SQL.80).aspx Transact-SQL Reference for SQL Server 2000 (MSDN)]▼
*[http://msdn2.microsoft.com/en-us/library/ms189826.aspx Transact-SQL Reference for SQL Server 2005 (MSDN)]▼
== Voci correlate ==
▲* [[Microsoft SQL Server]]
▲* [[PL/SQL]]
▲* [[SQL]]
== Collegamenti esterni ==
▲*
▲*
* {{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}}
[[
▲[[id:Transact-SQL]]
|