Transact-SQL
| Transact-SQL programmeringsspråk | |
|---|---|
| Författare | Microsoft , Sybase |
| Paradigm | procedurprogrammering |
Inom datavetenskap är Transact-SQL (ibland förkortat som T-SQL ) den proprietära förlängningen av SQL -språket utvecklat av Microsoft och Sybase . Microsofts version levereras med Microsoft SQL Server , medan Sybase använder detta språk i Adaptive Server Enterprise , efterföljaren till Sybase SQL Server .
Utöka SQL-prestanda genom att lägga till:
- Flödeskontrollfunktioner ; _
- Möjlighet att definiera lokala variabler .
- Olika funktioner för manipulering av strängar , datum, matematiska uttryck.
- Förbättrade DELETE- och UPDATE-satser .
Flödeskontroll och språkstruktur
Nyckelorden med vilka Transact - SQL
implementerar flödeskontroll inkluderar e ,,,, och ,,, och .BEGINENDBREAKCONTINUEGOTOIFELSERETURNWAITFORWHILE
IFoch tillåta villkoradELSE exekvering av instruktionsblock. Partiet som följer skriver ut "allmän helgdag" om det aktuella datumet är lördag eller söndag, eller "vardag" annars.
OM DATEPART (dw, GETDATE ()) = 7 ELLER DATEPART (dw, GETDATE ()) = 1 SKRIV UT "Det är en allmän helgdag." ANNAN SKRIV UT "Det är en vardag."
BEGINoch ENDavgränsa ett block med instruktioner. Om flera satser behöver styras av villkoren som visas i föregående exempel, kan vi använda BEGIN och END så här:
OM DATEPART (dw, GETDATE ()) = 7 ELLER DATEPART (dw, GETDATE ()) = 1 BÖRJA SKRIV UT "Det är en allmän helgdag." SKRIV UT "Ta semester!" SLUTET ANNAN BÖRJA SKRIV UT "Det är en vardag." SKRIV UT "Gå till jobbet!" SLUTET
WAITFORvänta en viss tid, eller till en viss tid på dygnet. Denna instruktion kan användas för att utföra fördröjda åtgärder eller för att blockera utförandet av en operation innan en viss tid uppnås.
RETURNden används för att omedelbart avsluta en lagrad procedur eller en viss funktion.
BREAKgör att en loop som börjar med a avslutas WHILEsamtidigt CONTINUEsom nästa loop i loopen körs. Nedan är ett exempel på en loop WHILE.
Lokala variabler
Lokala variabler är endast tillgängliga för skriptet som använder dem. Transact-SQL stöder inte användardefinierade globala variabler.
DECLAREdeklarerar en variabel och ger den ett namn och en typ. För att ge den ett värde används SET, och därefter kan variabeln användas genom att använda dess namn som referens.
Det här skriptet deklarerar en variabel som ett heltal, initierar den och använder sedan en WHILEto-loop.
DECLARE @Counter INT SET @Counter = 10 WHILE @Counter> 0 BÖRJA SKRIV UT "Antal cykler:" + KONVERTERA (VARCHAR (10), @Counter) SET @Counter = @Counter - 1 SLUTET
Inne i slingan skrivs ett meddelande med variabelns aktuella värde ut, varefter räknaren minskas med ett.
En variabel kan också initieras direkt som ett resultat av ett uttalande:
DECLARE @ContaArticoli INT VÄLJ @ContaArticoli = COUNT (*) FRÅN artiklar INFOGA I SizeLog (VerificationTime, ArticleCount) VÄRDEN (GETDATE (), @ContaArticoli)
Här läses till exempel antalet rader som finns i tabellen 'Artiklar', sedan läggs en rad som innehåller antalet rader och aktuell tid till tabellen 'SizeLog'.
Utökade DELETE- och UPDATE-satser
I Transact-SQL kan ett alternativ läggas till DELETE- och UPDATE-satser FROMsom tillåter länkning till andra tabeller med en JOIN. I följande exempel raderas alla poster i tabellen 'Användare' som har markerats med flaggan 'Idle'.
TA BORT användare
FRÅN användare som u
JOIN Users_flags som f
PÅ u.id = f.id
WHERE f.name = 'Idle'
Kritik
Enligt kritiker bryter de nya funktionerna i Transact-SQL inte bara kompatibiliteten med standard-SQL-språket, utan motsäger också antagandet att SQL är designat för att vara ett endast deklarativt språk (som det faktiskt var, åtminstone upp till standardversionen 1999 av SQL ). Med andra ord, de extra funktionerna i Transact-SQL skulle ha implementerats genom att introducera ett riktigt nytt språk av imperativ typ , med en förvirrande och inte särskilt linjär lösning, när istället, enligt kritikerna, samma funktioner kunde ha implementerats med ett annat programmeringslager eller med samma SQL.
Relaterade artiklar
Externa länkar
- ( EN ) Transact-SQL-referens för SQL Server 2000 (MSDN) , på msdn2.microsoft.com .
- ( EN ) Transact-SQL-referens för SQL Server 2005 (MSDN) , på msdn2.microsoft.com .
- ( EN ) ASE Referensmanual , på manuals.sybase.com . Hämtad 14 december 2007 (arkiverad från originalet 10 augusti 2007) .
- ( EN ) DevGuru T-SQL snabbreferens , på devguru.com . Hämtad 14 december 2007 (arkiverad från originalet 13 juli 2007) .