Delphi - Transact SQL további belső változói

Transact SQL 2. rész

forráskód letöltése
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
EXECUTE proc1

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
select @@OPTIONS
Egy-egy bitet beállítani, vagy kikapcsolni a SET paranccsal tudunk:
SET ANSI_WARNINGS ON
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:
IF @@OPTIONS & 32 > 0
  …
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
EXEC proc3

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:
use master
exec xp_msver

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:
SET TEXTSIZE 8192

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
SELECT @@TIMETICKS


Transact SQL cikksorozat