Sorozatunk második részében további változók tulajdonságaival, felhasználási lehetőségeivel ismerkedhetünk meg.
01.sql: @@CPU_BUSY
A változó segítségével meghatározható a CPU aktivitása egy-egy művelet alatt. Az eredményt ezredmásodpercben kapjuk.
Változó típusa: integer
SELECT @@CPU_BUSY AS 'CPU ms', EmployeeID, count(EmployeeID) AS 'Count' From Orders Group by
EmployeeID
02.sql: @@MAX_PRECISION
A decimal és numeric típusú adatok esetén megadható maximális precizitás mértéke olvasható ki a változóból.
Változó típusa: tinyint
SELECT @@MAX_PRECISION as 'Precizitás'
Alábbi táblázat összefoglalja, hogy egy adott precizitás esetén hány bájt szükséges az adott szám tárolásához.
Precizitás Tároláshoz szükséges bájtok
1 - 9 5
10-19 9
20-28 13
29-38 17
03.sql: @@NESTLEVEL
E példa kipróbálása előtt hozzuk létre a Northwind adatbázisba a két alábbi tárolt eljárást:
CREATE PROCEDURE proc1
as
select @@NESTLEVEL
exec proc2
GO
CREATE PROCEDURE proc2
as
select @@NESTLEVEL
GO
A NESTLEVEL változó segítségével meghatározható hogy a tárolt eljárásokban milyen mélységig vagyunk benne. Az alapszint értéke nulla. Ha meghívunk egy tárolt eljárást, akkor a NESTLEVEL változó értéke 1 lesz. Ha ez a tárolt eljárás meghív egy másikat, akkor a NESTLEVEL változó értéke már 2 lesz. Ha lefut a második tárolt eljárás, akkor nyilván az elsőre kerül vissza a vezérlés és ott folytatódik, ekkor a NESTLEVEL változó értéke visszaáll 1-re.
Változó típusa: integer
04.sql: @@ OPTIONS
A változónak az egyes bitjei tárolják az értékes információt. Minden bit egy-egy tulajdonságot befolyásol. Az alábbi táblázatban látható, hogy melyik bit mire szolgál.
Változó típusa: integer
Egy-egy bitet beállítani, vagy kikapcsolni a SET paranccsal tudunk:
Ha ellenőriznünk kell, hogy egy bit beállított-e vagy sem, akkor ezt az alábbiak szerint tehetjük meg, például az ANSI_NULLS bit ellenőrzése:
Bitek jelentése:
1 DISABLE_DEF_CNST_CHK
2 IMPLICIT_TRANSACTIONS
4 CURSOR_CLOSE_ON_COMMIT
8 ANSI_WARNINGS
16 ANSI_PADDING
32 ANSI_NULLS
64 ARITHABORT
128 ARITHIGNORE
256 QUOTED_IDENTIFIER
512 NOCOUNT
1024 ANSI_NULL_DFLT_ON
2048 ANSI_NULL_DFLT_OFF
4096 CONCAT_NULL_YIELDS_NULL
8192 NUMERIC_ROUNDABORT
16384 XACT_ABORT
05.sql: @@PACK_RECEIVED, @@PACK_SENT, @@PACKET_ERRORS, @@TOTAL_READ, @@TOTAL_WRITE, @@TOTAL_ERRORS
PACK_RECEIVED - fogadott csomagok száma
PACK_SENT - elküldött csomagok száma
PACKET_ERRORS - hibás csomagok száma
TOTAL_READ - összes olvasások száma
TOTAL_WRITE - összes írások száma
TOTAL_ERRORS - összes hibák száma
Változók típusa: integer
SELECT @@PACK_RECEIVED as 'Fogadott csomagok száma', @@PACK_SENT as 'Elküldött csomagok száma',
@@PACKET_ERRORS as 'Hibás csomagok száma', @@TOTAL_READ as 'Olvasások száma', @@TOTAL_WRITE as 'Írások
száma', @@TOTAL_ERRORS as 'Hibák száma'
06.sql: @@PROCID
E példa kipróbálása előtt hozzuk létre a Northwind adatbázisba az alábbi tárolt eljárást:
CREATE PROCEDURE proc3 AS
SELECT @@PROCID AS 'Procedure Identifier'
go
A PROCID változón keresztül lekérdezhetjük az aktuális tárolt eljárás egyedi azonosítóját.
Változó típusa: integer
07.sql: @@ROWCOUNT
A ROWCOUNT változó értékéből megtudhatjuk, hogy a legutoljára végrehajtott utasítás az adott táblában hány sort érintett.
Változó típusa: integer
UPDATE Customers SET CompanyName = 'Animare Software' WHERE (CustomerID = 'AS')
select @@rowcount as 'Módosult sorok száma'
08.sql: @@SERVERNAME, @@SERVICENAME, @@SPID, @@VERSION
SERVERNAME változóból megtudhatjuk, a szerver nevét. Változó típusa: nvarchar
SERVICENAME változóból a szerviz neve derül ki (pl.:MSSQLSERVER). Változó típusa: nvarchar
SPID a bejelentkezett felhasználó azonosító száma. Változó típusa: smallint
VERSION az SQL szerver verziója, melyből megtudhatjuk azt is, hogy milyen operációs rendszeren fut (pl.: Microsoft SQL Server 2000 - 8.00.384 (Intel X86) May 23 2001 00:02:52 Copyright (c) 1988-2000 Microsoft Corporation Developer Edition on Windows NT 5.0 (Build 2195: Service Pack 2)). Változó típusa: nvarchar
SELECT @@SERVERNAME as 'Szerver név', @@SERVICENAME as 'Szerviz név', @@SPID as 'Felhasználó ID',
@@VERSION as 'Szerver verzió'
Ha részletesebb verzió információkra vagyunk kíváncsiak, akkor futtassuk a következő tárolt eljárást:
09.sql: @@TEXTSIZE
A változóból kiolvashatjuk, hogy a Text, illetve az Image típusú mezők maximum hány bájtnyi adatot adnak vissza egy Select lekérdezés során.
Változó típusa: integer
SELECT @@TEXTSIZE as 'Text, Image max. mérete bájtban'
Ennek mértékét a SET utasítással állíthatjuk:
10.sql: @@TIMETICKS
A TIMETICKS egy számítógépenként változó érték, mely az adott hardvertől függ. Ez határozza meg, hogy egy ezredmásodperc egy órajel. Általában az értéke 31.25.
Változó típusa: integer
Transact SQL cikksorozat