Transact-SQL
| Transact-SQL programozási nyelv | |
|---|---|
| Szerző | Microsoft , Sybase |
| Paradigmák | eljárási programozás |
A számítástechnikában a Transact-SQL (néha T-SQL- nek is nevezik) a Microsoft és a Sybase által kifejlesztett SQL nyelv szabadalmaztatott kiterjesztése . A Microsoft verzióját a Microsoft SQL Serverrel szállítják , míg a Sybase ezt a nyelvet használja az Adaptive Server Enterprise -ban, amely a Sybase SQL Server utódja .
Növelje az SQL teljesítményét a következők hozzáadásával:
- Áramlásszabályozási funkciók ;
- Lehetőség helyi változók meghatározására .
- Különféle függvények karakterláncok , dátumok, matematikai kifejezések kezeléséhez.
- Továbbfejlesztett DELETE és UPDATE utasítások .
Folyamatszabályozás és nyelvi struktúra
Azok a kulcsszavak , amelyekkel a Transact - SQL
megvalósítja a folyamatvezérlést , a következők : BEGINe END,,,, és BREAK,,, és .CONTINUEGOTOIFELSERETURNWAITFORWHILE
IFés lehetővé teszi az utasításblokkok feltételesELSE végrehajtását . Az ezt követő köteg „munkaszüneti napot” nyomtat, ha az aktuális dátum szombat vagy vasárnap, vagy „hétköznap” egyébként.
IF DATEPART (dw, GETDATE ()) = 7 VAGY DATEPART (dw, GETDATE ()) = 1 NYOMTATÁS "Ez egy munkaszüneti nap." MÁS NYOMTATÁS "Hétköznap van."
BEGINés ENDhatároljon el egy utasításblokkot. Ha több utasítást kell vezérelni az előző példában bemutatott feltételekkel, akkor a következőképpen használhatjuk a BEGIN és END billentyűket:
IF DATEPART (dw, GETDATE ()) = 7 VAGY DATEPART (dw, GETDATE ()) = 1 KEZDŐDIK NYOMTATÁS "Ez egy munkaszüneti nap." NYOMTATÁS 'Vegyünk egy nyaralást!' VÉGE MÁS KEZDŐDIK NYOMTATÁS "Hétköznap van." NYOMTATÁS "Menj dolgozni!" VÉGE
WAITFORvárjon egy bizonyos ideig, vagy a nap egy bizonyos szakaszáig. Ez az utasítás használható késleltetett műveletek végrehajtására vagy egy művelet végrehajtásának blokkolására egy bizonyos idő elérése előtt.
RETURNarra szolgál, hogy azonnal kilépjen egy tárolt eljárásból vagy egy bizonyos funkcióból.
BREAKegy a-val kezdődő ciklust okoz, hogy kilépjen WHILE, miközben CONTINUEvégrehajtja a következő ciklust a ciklusban. Az alábbiakban egy hurok példája látható WHILE.
Helyi változók
A helyi változók csak az azokat használó szkript számára érhetők el. A Transact-SQL nem támogatja a felhasználó által definiált globális változókat.
DECLAREdeklarál egy változót, nevet és típust ad neki. Érték megadásához a SET-et használjuk, majd a változót a nevének hivatkozásként használva lehet használni.
Ez a szkript egy változót egész számként deklarál, inicializálja, majd egy WHILEto ciklust használ.
NYILATKOZAT @Counter INT SET @Counter = 10 WHILE @Counter> 0 KEZDŐDIK PRINT 'Ciklusok száma:' + KONVERTÁLÁS (VARCHAR (10), @Counter) SET @Counter = @Counter - 1 VÉGE
A cikluson belül a változó aktuális értékét tartalmazó üzenet kerül kinyomtatásra, majd a számláló eggyel csökken.
Egy változó közvetlenül is inicializálható egy utasítás eredményeként:
NYILATKOZAT @ContaArticoli INT SELECT @ContaArticoli = COUNT (*) A cikkekből INSERT INTO SizeLog (VerificationTime, ArticleCount) ÉRTÉKEK (GETDATE (), @ContaArticoli)
Itt például a „Cikkek” táblában található sorok száma kerül beolvasásra, majd a „SizeLog” táblához hozzáadódik egy sor, amely tartalmazza a sorok számát és az aktuális időt.
Bővített DELETE és UPDATE utasítások
A Transact-SQL-ben a DELETE és UPDATE utasításokhoz hozzáadható egy opció, FROMamely lehetővé teszi a hivatkozást más táblákhoz egy JOIN. A következő példában a „Felhasználók” tábla összes, „tétlen” jelzővel megjelölt rekordja törlődik.
Felhasználók törlése
FROM Felhasználók, mint u
JOIN Users_flags mint f
ON u.id = f.id
WHERE f.name = 'tétlen'
Kritikák
A kritikusok szerint a Transact-SQL új funkciói nem csak a szabványos SQL nyelvvel való kompatibilitást törik meg, hanem ellentmondanak annak a feltételezésnek is, hogy az SQL-t csak deklaratív nyelvnek tervezték (ahogy valójában volt, legalábbis a szabványos verzióig SQL 1999 ). Más szavakkal, a Transact-SQL további funkcióit egy valódi új, imperatív nyelv bevezetésével valósították volna meg , zavaró és nem túl lineáris megoldással, amikor a kritikusok szerint ugyanazokat a funkciókat lehetett volna megvalósítani. másik programozási réteg használatával vagy ugyanazzal az SQL-lel.
Kapcsolódó elemek
Külső linkek
- ( EN ) Transact-SQL Reference for SQL Server 2000 (MSDN) , msdn2.microsoft.com .
- ( HU ) Transact-SQL Reference for SQL Server 2005 (MSDN) , msdn2.microsoft.com .
- ( HU ) ASE Reference Manual , a manuals.sybase.com címen . Letöltve: 2007. december 14. (archiválva az eredetiből : 2007. augusztus 10. )
- ( EN ) DevGuru T-SQL gyorsreferencia , a devguru.com oldalon . Letöltve: 2007. december 14. (archiválva az eredetiből : 2007. július 13. )