Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Transact-SQL - Teknopedia
Transact-SQL - Teknopedia
Transact-SQL
linguaggio di programmazione
AutoreMicrosoft, Sybase
Paradigmiprogrammazione procedurale
Implementazione di riferimento
Sito webwww.tsql.info/
Modifica dati su Wikidata · Manuale

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:

  • 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

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]

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.

Istruzioni DELETE e UPDATE ampliate

[modifica | modifica wikitesto]

In Transact-SQL, alle istruzioni DELETE e UPDATE può essere aggiunta un'opzione FROM che permette il collegamento ad altre tabelle mediante una JOIN. Nell'esempio che segue vengono cancellati tutti i record della tabella 'Utenti' che sono stati marcati con il flag 'Idle'.

DELETE Utenti 
  FROM Utenti as u
  JOIN Utenti_flags as f
    ON u.id=f.id
 WHERE f.name = 'Idle'

Critiche

[modifica | modifica wikitesto]

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 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 correlate

[modifica | modifica wikitesto]
  • Microsoft SQL Server
  • PL/SQL
  • SQL

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Transact-SQL Reference for SQL Server 2000 (MSDN), su msdn2.microsoft.com.
  • (EN) Transact-SQL Reference for SQL Server 2005 (MSDN), su msdn2.microsoft.com.
  • (EN) ASE Reference Manual, su manuals.sybase.com. URL consultato il 14 dicembre 2007 (archiviato dall'url originale il 10 agosto 2007).
  • (EN) DevGuru T-SQL Quick Reference, su devguru.com. URL consultato il 14 dicembre 2007 (archiviato dall'url originale il 13 luglio 2007).
V · D · M
Principali linguaggi di programmazione (tutti)
ABAP · Ada · ALGOL · APL · Assembly · Awk · BASIC · C · C++ · C# · COBOL · Delphi · Eiffel · Fortran · F# · Haskell · IDL · Java · JavaScript · J# · Lisp · LOGO · Lua · ML · Objective-C · OCaml · Pascal · Perl · PHP · PL/I · PLaSM · Prolog · Python · Ruby · Rust · SAS · Scheme · sh · Simula · Smalltalk · SQL · Swift · Visual Basic
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Transact-SQL&oldid=146211609"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022