Változók és szinonimák deklarálása és hozzárendelése
A T-SQL-ben a többi programozási nyelvhez hasonlóan a változók olyan objektumok, amelyek lehetővé teszik egy érték ideiglenes tárolását későbbi használatra. Már találkozott változókkal, amikor paraméterértékeket adott át a tárolt eljárásoknak és függvényeknek.
A T-SQL-ben a változókat deklarálni kell a használatuk előtt. A deklarált értékek hozzárendelhetők vagy inicializálhatók. A változó deklarálása magában foglalja egy név és egy adattípus megadását, ahogyan az alább látható. Változó deklarálásához a DEKLARÁL utasítást kell használnia.
--Declare and initialize the variables.
DECLARE @numrows INT = 3, @catid INT = 2;
--Use variables to pass the parameters to the procedure.
EXEC Production.ProdsByCategory @numrows = @numrows, @catid = @catid;
GO
A változókat ugyanabban a kötegben kell deklarálni, amelyben hivatkoznak rájuk. Más szóval az összes T-SQL-változó a köteg hatókörében helyi, mind láthatósági, mind élettartambeli. A kötegben deklarált változót csak az ugyanabban a kötegben lévő többi utasítás láthatja. A köteg végekor a rendszer automatikusan megsemmisít egy változót.
Változók használata
Miután deklarált egy változót, inicializálnia kell, vagy hozzá kell rendelnie egy értéket. Ezt három módon teheti meg:
- Az SQL Server 2008-ban vagy újabb verzióiban inicializálhat egy változót a DECLARE utasítással.
- Az SQL Server bármely verziójában egyetlen (skaláris) értéket rendelhet hozzá a SET utasítással.
- Az SQL Server bármely verziójában select utasítással rendelhet hozzá értéket egy változóhoz. Győződjön meg arról, hogy a SELECT utasítás pontosan egy sort ad vissza. Az üres eredmény az eredeti értékével hagyja meg a változót; egynél több eredmény adja vissza az utolsó eredményt.
Az alábbi példa az értékek változókhoz való deklarálásának és hozzárendelésének három módját mutatja be:
DECLARE @var1 AS INT = 99;
DECLARE @var2 AS NVARCHAR(255);
SET @var2 = N'string';
DECLARE @var3 AS NVARCHAR(20);
SELECT @var3 = lastname FROM HR.Employees WHERE empid=1;
SELECT @var1 AS var1, @var2 AS var2, @var3 AS var3;
GO
Ez a következő eredményeket hozza létre.
| var1 | var2 | var3 |
|---|---|---|
| 99 | karakterlánc | Davis |
Jótanács
A helyi változókkal kapcsolatos teljes útmutatásért tekintse meg a T-SQL referenciadokumentációját.
Szinonimák használata
Az SQL Serverben a szinonimák metódust biztosítanak egy olyan objektumra mutató hivatkozás vagy alias létrehozásához, amely ugyanabban az adatbázisban vagy az SQL Server egy másik példányán található. Azok az objektumok, amelyekhez szinonimák definiálva lehetnek, táblákat, nézeteket, tárolt eljárásokat és felhasználó által definiált függvényeket tartalmaznak.
A szinonimák használhatók arra, hogy a távoli objektumok helyiként jelenjenek meg, vagy alternatív nevet adjanak egy helyi objektumnak. Szinonimák használatával például absztrakciós réteget biztosíthat az ügyfélkód és a kód által használt tényleges adatbázis-objektumok között. A kód az objektumokra az aliasaik alapján hivatkozik, függetlenül az objektum tényleges nevétől.
Megjegyzés:
Létrehozhat egy szinonimát, amely egy még nem létező objektumra mutat. Ezt halasztott névfeloldásnak nevezzük. Az SQL Server-motor nem ellenőrzi a tényleges objektum meglétét, amíg a szinonimát nem használja futásidőben.
A szinonimák kezeléséhez használja az adatdefiníciós nyelv (DDL) parancsait, mint például a CREATE SYNONYM, ALTER SYNONYM és DROP SYNONYM, ahogyan az alábbi példában is látható.
CREATE SYNONYM dbo.ProdsByCategory FOR TSQL.Production.ProdsByCategory;
GO
EXEC dbo.ProdsByCategory @numrows = 3, @catid = 2;
Szinonimák létrehozásához "CREATE SYNONYM" engedéllyel kell rendelkeznie, valamint engedéllyel kell rendelkeznie annak a sémának a módosítására, amelyben a szinonima tárolásra kerül.
Megjegyzés:
Szinonimák létrehozásához a felhasználónak a CREATE SYNONYM engedéllyel kell rendelkeznie, és vagy tulajdonjoggal, vagy ALTER SCHEMA engedéllyel kell rendelkeznie a célsémában.
A szinonimák olyan "üres" objektumok, amelyek futásidőben történő hivatkozáskor a forrásobjektumra lesznek feloldva.