C# - Rendszer funkciók

Transact SQL 11. rész

forráskód letöltése
Transact SQL nyelvet tárgyaló sorozatunkban most a rendszer funkciókat vesszük sorra és megnézzük használati lehetőségüket példákon keresztül.
01.sql
Első lépés, hogy létrehozunk egy adatbázist SystemFuncTest névvel, melyet a bemutatandó példákhoz használunk.
02.sql
Következő lépésben egy táblát is létrehozunk és elhelyezünk benne néhány sornyi adatot is a tesztekhez.
create table Table01
(
  id int identity (1000, 5),
  value1 int,
  value2 int,
  value3 varchar(20)
)
03.sql: COALESCE
A COALESCE függvénynek több paramétert is megadhatunk vesszővel elválasztva. A függvény visszatérési értéke az átadott kifejezések közül az első nem null értéket adó kifejezés értéke lesz. Ha paraméterként mondjuk megadjuk A és B kifejezést, ebben a sorrendben, akkor először az A kifejezés lesz megvizsgálva, ha ez nem null, akkor ennek értékét adja vissza a függvény, ha null, akkor vizsgálja B kifejezést. Ha ez nem null, akkor B értéke lesz visszaadva. Ha B is null érték lenne, akkor a függvény visszatérési értéke is null lesz.
Visszatérési értékének típusa egyezik a kiválasztott kifejezés típusával.
SELECT CAST(COALESCE(value2, value1) AS varchar(10)) FROM Table01
04.sql: APP_NAME
Az aktuális folyamatot indító alkalmazás nevét az APP_NAME függvény szolgáltatja.
Visszatérési értéke: nvarchar(128)
select APP_NAME()
Programból az adatbázis kapcsolat létrehozásánál tudjuk megadni az alkalmazásunknak szánt nevet, mely az APP_NAME függvénnyel lekérdezhető.
    ADOConnection1.ConnectionString:='Application Name=Software Online TestApp';
05.sql: COLLATIONPROPERTY
Nyelvi tulajdonságokat kérdezhetünk le a COLLATIONPROPERTY használatával.
Visszatérési érték típusa: sql_variant
SELECT 'Hungarian_CS_AS' as Name, COLLATIONPROPERTY('Hungarian_CS_AS', 'CodePage') as CodePage,
    COLLATIONPROPERTY('Hungarian_CS_AS', 'LCID') as LCID, COLLATIONPROPERTY('Hungarian_CS_AS',
        'ComparisonStyle') as ComparisonStyle
Az első paraméterben megadható érték listáját az alábbi lekérdezés szolgáltatja.
SELECT * FROM ::fn_helpcollations()
06.sql: CURRENT_TIMESTAMP
Aktuális dátum és idő lekérdezése. A funkció egyenértékű a GetDate függvény hívásával.
Visszatérési érték típusa: datetime
SELECT CURRENT_TIMESTAMP as 'CURRENT_TIMESTAMP'
07.sql
CURRENT_USER - aktuális felhasználó neve, ugyanaz mintha a USER_NAME függvényt hívnánk. Visszatérési érték típusa: sysname.
SESSION_USER - aktuális folyamatot használó felhasználó neve. Visszatérési érték típusa: nchar.
SYSTEM_USER - rendszer felhasználói név
SELECT CURRENT_USER as 'CURRENT_USER', SESSION_USER as 'SESSION_USER', SYSTEM_USER as 'SYSTEM_USER', USER_NAME() as 'USER_NAME'
08.sql: datalength
A datalength függvénnyel meghatározhatjuk egy kifejezés értékének hosszát.
Visszatérési érték típusa: int
SELECT value3, datalength(value3) as 'datalength' FROM Table01
09.sql: host_id, host_name
A host_id függvény a munkaállomás gép azonosítóját adja vissza, amelyről kapcsolódunk a szerverre. Visszatérési érték típusa: char(8).
A host_name függvény annak a munkaállomás gépnek a nevét adja vissza, amelyről kapcsolódunk a szerverre. Visszatérési érték típusa: nchar.
SELECT host_id() as HostID, host_name() as HostName
10.sql
A Table01 létrehozásakor az id mezőt az alábbi módon adtuk meg:
 id int identity (1000, 5),
IDENT_CURRENT - a legutoljára használt identity értéket adja vissza, mivel mellékelt példában 6 sor van, ami 1000-től számozódik ötösével, így ez 1025 lesz. Visszatérési érték típusa: sql_variant.
IDENT_SEED - az identity kezdő értéke. Visszatérési érték típusa: numeric.
IDENT_INCR - az identity növekménye. Visszatérési érték típusa: numeric.
select IDENT_CURRENT('Table01') as 'Current', IDENT_SEED('Table01') as 'Seed', IDENT_INCR('Table01') as 'Increment'
11.sql: IDENTITY
Az IDENTITY függvény csak egy esetben használható: amikor egy Select-et használunk Into táblanév formában. Ezzel lemásolhatunk egy táblát, illetve annak oszlopainak és sorainak bizonyos részhalmazát. Ekkor, ha az új tábla egyik mezőjében szeretnénk egy olyan mezőt, mely identity-ként viselkedik, akkor használható az IDENTITY függvény. Paraméterként a mező típusa, a számláló kezdő értéke, valamint annak növekménye adható meg.
Alábbi példában lemásoljuk a Table01 tábla teljes tartalmát egy Table02 most létrehozandó táblába. A Table01 id mezőjét nem másoljuk. Ehelyett használjuk az IDENTITY függvényt és egy új értéket hozunk létre newid oszlopnévvel. A Table01 value1 oszlopát átmásoljuk, de most v1 nevet adunk neki. A value2-t és value3-t változtatás nélkül átmásoljuk.
SELECT IDENTITY(int, 1000, 1000) AS newid, value1 as v1, value2, value3 INTO Table02 FROM Table01
12.sql: isdate
Annak vizsgálatára, hogy egy sztring dátumot tartalmaz-e vagy sem, az IsDate függvény segít bennünket.
Visszatérési érték típusa: int. Értéke 1, ha valós dátum és 0, ha nem az a megadott kifejezés.
select isdate('99/11/22'), isdate('11/22/99'), isdate('1120'), isdate('11:20')
13.sql: isnull
Ha egy kifejezés értéke null lenne, akkor megadhatjuk, hogy ez milyen értékkel legyen helyettesítve. Ehhez az isnull függvényt kell használnunk. Első paramétere a vizsgálandó kifejezés. A második a behelyettesítendő érték. Ha a kifejezés értéke nem null, akkor a függvény ezt adja vissza. Null esetén pedig a második paraméterben megadott értéket.
Visszatérési érték típusa egyezik az első paraméter típusával.
select value1, isnull(value1, 10000) from Table01
14.sql: isnumeric
Annak eldöntésére, hogy egy kifejezés számot ad-e eredményül vagy sem, az isnumeric függvény használható. Paraméterként a vizsgálandó kifejezést kell átadni.
Visszatérési érték típusa: int. Értéke 1, ha valós szám és 0, ha nem az a megadott kifejezés
select value1, isnumeric(value1), isnumeric(1), isnumeric('c') from Table01
15.sql: newid
Új GUID azonosító generálására szolgál a newid függvény.
Visszatérési érték típusa: uniqueidentifier
select newid()
16.sql: NULLIF
Nullif függvény null értéket ad vissza abban az esetben, ha a két paraméterként átadott kifejezés értéke megegyezik. Ellenkező esetben az első kifejezés értékét kapjuk vissza.
Visszatérési érték típusa egyezik az első kifejezés típusával.
SELECT NULLIF(1001, 1000), NULLIF(1000, 1000)
17.sql: PARSENAME
A PARSENAME függvény segítségével felbonthatjuk részekre egy objektum teljesen minősített nevének kifejezését, mely tartalmazhatja a szerver nevét, az adatbázis nevét, a tulajdonos nevét és az objektum nevét.
Első paraméterként a nevet, másodikként egy számot kell megadnunk, melynek az alábbi lesz a jelentése:
1 - az objektum neve
2 - a tulajdonos neve
3 - az adatbázis neve
4 - a szerver neve
Visszatérési érték típusa: nchar
declare @s varchar(50)
select @s='as1\netsdk.northwind.dba.products'
select PARSENAME(@s, 1), PARSENAME(@s, 2), PARSENAME(@s, 3), PARSENAME(@s, 4)
18.sql: @@rowcount
A legutoljára végzett művelet által érintett sorok számát adja a @@rowcount. Mellékelt példában töröljük a Table01 összes sorát, majd lekérdezzük a @@rowcount értékét és így megtudjuk hogy hány sor lett törölve.
Visszatérési érték típusa: int.
delete Table01
select @@rowcount as 'Törölt sorok száma', ROWCOUNT_BIG()
19.sql: SERVERPROPERTY
A szerver tulajdonságait kérdezhetjük le a SERVERPROPERTY függvénnyel. Paraméterként a lekérdezendő tulajdonság nevét kell megadnunk, mely az alábbiak egyike lehet:
  • Collation - nvarchar típusban megkapjuk az alapértelmezett nyelvi beállítás megnevezését.
  • Edition - nvarchar(128) típusban megkapjuk az SQL szerver változatának megnevezését. Lehetséges értékek alább láthatóak.
  • Engine Edition - int típusban kapjuk vissza, hogy az SQL szerver motorjának melyik változata fut. Lehetséges értékek alább láthatóak.
  • InstanceName - nvarchar típusban megkapjuk az SQL szerver példányának nevét, melyhez a felhasználó kapcsolódik.
  • IsClustered - értéke 1, ha az SQL szerver fürtözve van, 0 ha nincs.
  • IsFullTextInstalled - értéke 1, ha a Full Text szolgáltatás telepítve, 0 ha nincs.
  • IsIntegratedSecurityOnly - értéke 1, ha a szerver integrált biztonsági módban van, 0 ha nem.
  • IsSingleUser - értéke 1, ha a szerver egy felhasználós módban van, 0 ha nem.
  • IsSyncWithBackup - értéke 1, ha publikált, vagy szétosztott, 0 ha nem.
  • LicenseType - licencszelés módja. Lehetséges értékek alább láthatóak.
  • MachineName - nvarchar típusban megkapjuk az SQL szervert futtató gép nevét.
  • NumLicenses - int típusban megkapjuk a licencek számát.
  • ProcessID - int típusban megkapjuk az SQL szerver szervizének Process azonosítóját.
  • ProductVersion - varchar(128) típusban megkapjuk az SQL szerver verziószámát, 'major.minor.build' formában.
  • ProductLevel - nvarchar(128) típusban megkapjuk az SQL szerver szintjét. Lehetséges értékek alább láthatóak.
  • ServerName - nvarchar típusban megkapjuk az SQL szerver nevét.
Az Edition tulajdonság az alábbi megnevezéseket adhatja vissza:
  • 'Desktop Engine'
  • 'Developer Edition'
  • 'Enterprise Edition'
  • 'Enterprise Evaluation Edition'
  • 'Personal Edition'
  • 'Standard Edition'
Az Engine Edition tulajdonság az alábbi értékeket adhatja vissza:
  • 1 = Personal vagy Desktop Engine
  • 2 = Standard
  • 3 = Enterprise, Enterprise Evaluation, Developer
A LicenseType tulajdonság az alábbi értékeket adhatja vissza:
  • PER_SEAT - felhasználónkénti licenc
  • PER_PROCESSOR - processzoronkénti licenc
  • DISABLED - licencszelés letiltva.
A ProductLevel tulajdonság az alábbi értékeket adhatja vissza:
  • 'RTM' - kész verzió
  • 'SPn' - szervizcsomaggal frissített verzió, ahol az n a szervizcsomag száma
  • 'Bn' - béta verzió, ahol az n a béta verzió száma
21.sql
Példánk befejezéseképp töröljük a létrehozott SystemFuncTest adatbázist.
DROP DATABASE SystemFuncTest
select 'Adatbázis törölve'

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész
Transact SQL további belső változói - Transact SQL 2. rész
Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész

Rendszer funkciók - Transact SQL 11. rész

Adatkonvertálási lehetőségek - Transact SQL 12. rész
Tárolt eljárás létrehozása - TransactSQL 13. rész
Triggerek kezelése - Transact SQL 14. rész
Indexek létrehozása - Transact SQL 15. rész
Függvények definiálása - Transact SQL 16. rész
Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész
Nézet táblák létrehozása - Transact SQL 20. rész
Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész
SET parancsok - Transact SQL 28. rész