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 i FROMklausulen, på samma sätt som SELECT. När detta är gjort placeras namnet eller aliaset för vilken tabell i kopplingen som ska raderas från mellan DELETEoch FROM.
  • UPDATEgör det möjligt FROMatt lägga till en klausul. Tabellen som ska uppdateras kan antingen sammanfogas i FROMklausulen 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

Referenser

externa länkar