Transact-SQL
Transact-SQL limbaj de programare | |
---|---|
Autor | Microsoft , Sybase |
Paradigme | programare procedurală |
În informatică Transact-SQL (uneori prescurtat ca T-SQL ) este extensia proprietară a limbajului SQL dezvoltată de Microsoft și Sybase . Versiunea Microsoft este livrată împreună cu Microsoft SQL Server , în timp ce Sybase folosește acest limbaj în Adaptive Server Enterprise , succesorul Sybase SQL Server .
Extindeți performanța SQL adăugând:
- Funcții de control al debitului ;
- Abilitatea de a defini variabilele locale.
- Diverse funcții pentru manipularea șirurilor , date, expresii matematice.
- Instrucțiuni îmbunătățite ȘTERGERE și ACTUALIZARE.
Controlul fluxului și structura limbajului
Cuvintele cheie cu care Transact-SQL implementează controlul fluxului includ BEGIN
și END
, BREAK
, CONTINUE
, GOTO
, IF
și ELSE
, RETURN
, WAITFOR
și WHILE
.
IF
și ELSE
permit executarea condiționată a blocurilor de instrucțiuni. Lotul care urmează imprimă „sărbătoare” dacă data curentă este sâmbătă sau duminică sau „zi de săptămână” în alte cazuri.
IF DATEPART (dw, GETDATE ()) = 7 SAU DATEPART (dw, GETDATE ()) = 1 IMPRIMĂ „Este o sărbătoare publică”. ALTE IMPRIMĂ „Este o zi săptămânală”.
BEGIN
și END
delimitează un bloc de instrucțiuni. Dacă mai multe instrucțiuni trebuie controlate de condițiile prezentate în exemplul anterior, putem folosi BEGIN și END astfel:
IF DATEPART (dw, GETDATE ()) = 7 SAU DATEPART (dw, GETDATE ()) = 1 ÎNCEPE IMPRIMĂ „Este o sărbătoare publică”. IMPRIMĂ „Ia-ți o vacanță!” SFÂRȘIT ALTE ÎNCEPE IMPRIMĂ „Este o zi săptămânală”. IMPRIMĂ „Du-te la muncă!” SFÂRȘIT
WAITFOR
așteaptă o anumită perioadă de timp sau până la o anumită oră a zilei. Această instrucțiune poate fi utilizată pentru a efectua acțiuni întârziate sau pentru a bloca executarea unei operații înainte de a ajunge la un anumit timp.
RETURN
este folosit pentru a părăsi imediat o procedură stocată sau o anumită funcție.
BREAK
face ca o buclă să iasă începând cu un WHILE
, în timp ce CONTINUE
face ca următoarea buclă din buclă să se execute. Mai jos este un exemplu de buclă WHILE
.
Variabile locale
Variabilele locale sunt accesibile numai scriptului care le folosește. Transact-SQL nu acceptă variabilele globale definite de utilizator.
DECLARE
declară o variabilă, dându-i un nume și un tip. Pentru a-i da o valoare, se folosește SET, iar ulterior variabila poate fi utilizată folosind numele său ca referință.
Acest script declară o variabilă ca număr întreg, o inițializează și apoi folosește un WHILE
pentru a face o buclă.
DECLARAȚI @Counter INT SET @Counter = 10 CÂND @Counter> 0 ÎNCEPE PRINT 'Număr de cicluri:' + CONVERT (VARCHAR (10), @Counter) SET @Counter = @Counter - 1 SFÂRȘIT
În interiorul buclei, este tipărit un mesaj care include valoarea curentă a variabilei, după care contorul este decrementat cu unul.
O variabilă poate fi, de asemenea, inițializată direct ca urmare a unei instrucțiuni:
DECLARAȚI @ContaArticoli INT SELECT @ContaArticoli = COUNT (*) DIN articole INSERT INTO SizeLog (VerificationTime, ContaArticoli) VALORI (GETDATE (), @ContaArticoli)
Aici, de exemplu, se citește numărul de rânduri cuprinse în tabelul „Articole”, apoi un rând care conține numărul de rânduri și ora curentă este adăugat la tabelul „SizeLog”.
Instrucțiuni extinse DELETE și UPDATE
În Transact-SQL, o opțiune FROM
poate fi adăugată la instrucțiunile DELETE și UPDATE care vă permite să vă conectați la alte tabele utilizând un JOIN
. În exemplul următor, toate înregistrările din tabelul „Utilizatori” care au fost marcate cu semnalizatorul „Inactiv” sunt șterse.
ȘTERGEȚI Utilizatorii FROM Utilizatori ca u ÎNSCRIEȚI Users_flags ca f ON u.id = f.id UNDE f.name = "Inactiv"
Critici
Potrivit criticilor, noile caracteristici ale Transact-SQL nu numai că întrerup compatibilitatea cu limbajul SQL standard, dar contrazic și presupunerea că SQL este conceput a fi un limbaj exclusiv declarativ (așa cum a fost de fapt, cel puțin până la versiunea standard 1999 din SQL ). Cu alte cuvinte, caracteristicile suplimentare ale Transact-SQL ar fi fost implementate prin introducerea unui nou limbaj real de tip imperativ , cu o soluție confuză și nu foarte liniară, când în schimb, conform criticilor, ar fi putut fi puse în aplicare aceleași caracteristici folosind un alt strat de programare sau folosind SQL-ul în sine. [ fără sursă ]
Elemente conexe
linkuri externe
- ( EN ) Referință Transact-SQL pentru SQL Server 2000 (MSDN) , la msdn2.microsoft.com .
- ( EN ) Referință Transact-SQL pentru SQL Server 2005 (MSDN) , la msdn2.microsoft.com .
- ( RO ) Manual de referință ASE , la manuals.sybase.com . Adus la 14 decembrie 2007 (arhivat din original la 10 august 2007) .
- ( RO ) DevGuru T-SQL Quick Reference , la devguru.com . Adus la 14 decembrie 2007 (arhivat din original la 13 iulie 2007) .