Transact-SQL

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
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:

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