Transact -SQL - Transact-SQL
Transact-SQL ( T-SQL ) är Microsofts och Sybases egenutvecklade tillägg till SQL (Structured Query Language) som används för att interagera med relationsdatabaser . T-SQL utökar SQL-standarden med procedurprogrammering , lokala variabler , olika stödfunktioner för strängbehandling, datumbearbetning, matematik etc. och ändringar i DELETE- och UPDATE- satserna.
Transact-SQL är centralt för att använda Microsoft SQL Server . Alla program som kommunicerar med en instans av SQL Server gör det genom att skicka Transact-SQL-satser till servern, oavsett användargränssnittet för applikationen.
Lagrade procedurer i SQL Server är körbara rutiner på serversidan. Fördelen med lagrade procedurer är möjligheten att skicka parametrar.
Variabler
Transact-SQL ger följande påståenden att deklarera och inställda lokala variabler: DECLARE, SEToch SELECT.
DECLARE @var1 NVARCHAR(30);
SET @var1 = 'Some Name';
SELECT @var1 = Name
FROM Sales.Store
WHERE CustomerID = 100;
Flödeskontroll
Sökord för flödesreglering i Transact-SQL inkluderar BEGINoch END, BREAK, CONTINUE, GOTO, IFoch ELSE, RETURN, WAITFOR, och WHILE.
IFoch ELSEtillåta villkorligt utförande. Detta satsuttalande kommer att skriva ut "Det är helgen" om det aktuella datumet är en helgdag eller "Det är en vardag" om det aktuella datumet är en vardag. (Obs! Denna kod förutsätter att söndagen är konfigurerad som den första dagen i veckan i @@DATEFIRSTinställningen.)
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
PRINT 'It is the weekend.';
ELSE
PRINT 'It is a weekday.';
BEGINoch ENDmarkera ett block av uttalanden . Om mer än ett uttalande ska styras av villkoret i exemplet ovan kan vi använda BEGINoch göra ENDså här:
IF DATEPART(dw, GETDATE()) = 7 OR DATEPART(dw, GETDATE()) = 1
BEGIN
PRINT 'It is the weekend.';
PRINT 'Get some rest on the weekend!';
END;
ELSE
BEGIN
PRINT 'It is a weekday.';
PRINT 'Get to work on a weekday!';
END;
WAITFORväntar en viss tid eller tills en viss tid på dagen. Påståendet kan användas för förseningar eller för att blockera körning fram till den inställda tiden.
RETURNanvänds för att omedelbart återvända från en lagrad procedur eller funktion.
BREAKavslutar den inneslutande WHILEslingan, medan den CONTINUEgör att nästa iteration av slingan exekveras. Ett exempel på en WHILEslinga ges nedan.
DECLARE @i INT;
SET @i = 0;
WHILE @i < 5
BEGIN
PRINT 'Hello world.';
SET @i = @i + 1;
END;
Ändringar i DELETE och UPDATE -uttalanden
I Transact-SQL förbättras både DELETEoch och UPDATEsatser för att data från en annan tabell ska kunna användas i operationen, utan att behöva en underfråga:
-
DELETEaccepterar sammanfogade tabeller iFROMklausulen, på samma sätt somSELECT. När detta är gjort placeras namnet eller aliaset för vilken tabell i kopplingen som ska raderas från mellanDELETEochFROM. -
UPDATEgör det möjligtFROMatt lägga till en klausul. Tabellen som ska uppdateras kan antingen sammanfogas iFROMklausulen och refereras av alias, eller refereras endast i början av satsen enligt standard SQL.
I det här exemplet raderas alla userssom har flaggats med flaggan "Inaktiv".
DELETE u
FROM users AS u
INNER JOIN user_flags AS f
ON u.id = f.id
WHERE f.name = 'idle';
BULKINSÄTT
BULKär en Transact-SQL-sats som implementerar en massdataladdningsprocess, infogar flera rader i en tabell, läser data från en extern sekventiell fil. Användning av BULK INSERTresultaten ger bättre prestanda än processer som utfärdar enskilda INSERTuttalanden för varje rad som ska läggas till. Ytterligare information finns i MSDN .
FÖRSÖK FÅNGA
Från och med SQL Server 2005 introducerade Microsoft ytterligare TRY CATCHlogik för att stödja undantagstypens beteende. Detta beteende gör det möjligt för utvecklare att förenkla sin kod och släppa @@ERRORkontrollen efter varje SQL -körning.
-- begin transaction
BEGIN TRAN;
BEGIN TRY
-- execute each statement
INSERT INTO MYTABLE(NAME) VALUES ('ABC');
INSERT INTO MYTABLE(NAME) VALUES ('123');
-- commit the transaction
COMMIT TRAN;
END TRY
BEGIN CATCH
-- roll back the transaction because of error
ROLLBACK TRAN;
END CATCH;
Se även
- Adaptive Server Enterprise (Sybase)
- PL/SQL (Oracle)
- PL/pgSQL (PostgreSQL)
- SQL/PSM (ISO -standard)
- Sys.sysobjects
- Dataström i tabellform