Variabelen en synoniemen declareren en toewijzen
In T-SQL, net als bij andere programmeertalen, zijn variabelen objecten die tijdelijke opslag van een waarde toestaan voor later gebruik. U hebt al variabelen aangetroffen toen u ze gebruikte om parameterwaarden door te geven aan opgeslagen procedures en functies.
In T-SQL moeten variabelen worden gedeclareerd voordat ze kunnen worden gebruikt. Ze kunnen een waarde worden toegewezen of geïnitialiseerd wanneer ze worden gedeclareerd. Het declareren van een variabele omvat het opgeven van een naam en een gegevenstype, zoals hieronder wordt weergegeven. Als u een variabele wilt declareren, moet u de DECLARE-instructie gebruiken.
--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
Variabelen moeten worden gedeclareerd in dezelfde batch waarin ernaar wordt verwezen. Met andere woorden, alle T-SQL-variabelen zijn lokaal binnen het bereik van de batch, zowel in zichtbaarheid als levensduur. Alleen andere instructies in dezelfde batch kunnen een variabele zien die in de batch is gedeclareerd. Een variabele wordt automatisch vernietigd wanneer de batch eindigt.
Werken met variabelen
Nadat u een variabele hebt gedeclareerd, moet u deze initialiseren of een waarde toewijzen. U kunt dit op drie manieren doen:
- In SQL Server 2008 of hoger kunt u een variabele initialiseren met behulp van de DECLARE-instructie.
- In elke versie van SQL Server kunt u één (scalaire) waarde toewijzen met behulp van de SET-instructie.
- In elke versie van SQL Server kunt u een waarde toewijzen aan een variabele met behulp van een SELECT-instructie. Zorg ervoor dat de SELECT-instructie precies één rij retourneert. Een leeg resultaat laat de variabele met de oorspronkelijke waarde staan; meer dan één resultaat retourneert het laatste resultaat.
In het volgende voorbeeld ziet u de drie manieren om waarden aan variabelen te declareren en toe te wijzen:
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
Hiermee worden de volgende resultaten gegenereerd.
var1 | var2 | var3 |
---|---|---|
99 | touw | Davis |
Aanbeveling
Raadpleeg de T-SQL-referentiedocumentatie voor volledige richtlijnen voor lokale variabelen.
Werken met synoniemen
In SQL Server bieden synoniemen een methode voor het maken van een koppeling of alias naar een object dat is opgeslagen in dezelfde database of zelfs op een ander exemplaar van SQL Server. Objecten waarvoor mogelijk synoniemen zijn gedefinieerd, zijn tabellen, weergaven, opgeslagen procedures en door de gebruiker gedefinieerde functies.
Synoniemen kunnen worden gebruikt om een extern object lokaal weer te geven of om een alternatieve naam op te geven voor een lokaal object. Synoniemen kunnen bijvoorbeeld worden gebruikt om een abstractielaag te bieden tussen clientcode en de werkelijke databaseobjecten die door de code worden gebruikt. De code verwijst naar objecten op basis van hun aliassen, ongeacht de werkelijke naam van het object.
Opmerking
U kunt een synoniem maken dat verwijst naar een object dat nog niet bestaat. Dit wordt de uitgestelde naamomzetting genoemd. De SQL Server-engine controleert pas op het bestaan van het werkelijke object als het synoniem tijdens runtime wordt gebruikt.
Als u synoniemen wilt beheren, gebruikt u de DDL-opdrachten (Data Definition Language), CREATE SYNONYM, ALTER SYNONYM en DROP SYNONYM, zoals in het volgende voorbeeld:
CREATE SYNONYM dbo.ProdsByCategory FOR TSQL.Production.ProdsByCategory;
GO
EXEC dbo.ProdsByCategory @numrows = 3, @catid = 2;
Als u een synoniem wilt maken, moet u de machtiging 'SYNONIEM MAKEN' hebben, evenals de machtiging om het schema te wijzigen waarin het synoniem wordt opgeslagen.
Opmerking
Als de gebruiker een synoniem wil maken, moet hij de machtiging CREATE SYNONYM hebben en moet hij de eigenaar zijn van het schema of de machtiging ALTER SCHEMA hebben in het doelschema.
Een synoniem is een 'leeg' object dat wordt omgezet in het bronobject wanneer er tijdens runtime naar wordt verwezen.