Declararea și atribuirea variabilelor și sinonimelor

Finalizat

În T-SQL, ca și în alte limbi de programare, variabilele sunt obiecte care permit stocarea temporară a unei valori pentru utilizare ulterioară. Ați întâlnit deja variabile atunci când le-ați utilizat pentru a transmite valorile parametrilor la procedurile și funcțiile stocate.

În T-SQL, variabilele trebuie declarate înainte de a fi utilizate. Acestea pot fi atribuite unei valori sau inițializate, atunci când sunt declarate. Declararea unei variabile include furnizarea unui nume și a unui tip de date, așa cum se arată mai jos. Pentru a declara o variabilă, trebuie să utilizați instrucțiunea DECLARE.

--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

Variabilele trebuie declarate în același lot la care se face referire. Cu alte cuvinte, toate variabilele T-SQL sunt locale în domeniul de aplicare pentru lot, atât în vizibilitate, cât și pe viață. Numai alte instrucțiuni din același lot pot vedea o variabilă declarată în lot. O variabilă este distrusă automat atunci când se termină lotul.

Lucrul cu variabile

După ce ați declarat o variabilă, trebuie să o inițializați sau să o atribuiți unei valori. Puteți face acest lucru în trei moduri:

  • În SQL Server 2008 sau o versiune mai recentă, puteți inițializa o variabilă utilizând instrucțiunea DECLARE.
  • În orice versiune de SQL Server, puteți atribui o valoare unică (scalară) utilizând instrucțiunea SET.
  • În orice versiune de SQL Server, puteți atribui o valoare unei variabile utilizând o instrucțiune SELECT. Asigurați-vă că instrucțiunea SELECT returnează exact un rând. Un rezultat gol va lăsa variabila cu valoarea sa inițială; mai mult de un rezultat va returna ultimul rezultat.

Următorul exemplu arată cele trei modalități de declarare și atribuire a valorilor variabilelor:

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

Aceasta generează următoarele rezultate.

var1 var2 var3
99 șir Davis

Sfat

Pentru instrucțiuni complete despre variabilele locale, consultați documentația de referință T-SQL.

Lucrul cu sinonime

În SQL Server, sinonimele furnizează o metodă de creare a unui link sau a unui alias la un obiect stocat în aceeași bază de date sau chiar în altă instanță de SQL Server. Obiectele care pot avea sinonime definite pentru acestea includ tabele, vizualizări, proceduri stocate și funcții definite de utilizator.

Sinonimele pot fi utilizate pentru a face ca un obiect la distanță să apară local sau să furnizeze un nume alternativ pentru un obiect local. De exemplu, sinonimele pot fi utilizate pentru a furniza un strat de abstractizare între codul clientului și obiectele reale ale bazei de date utilizate de cod. Codul face referire la obiecte după aliasurile lor, indiferent de numele real al obiectului.

Notă

Puteți crea un sinonim care indică spre un obiect care nu există încă. Aceasta se numește rezoluție de nume amânată. Motorul SQL Server nu va verifica existența obiectului real până când sinonimul nu este utilizat la momentul rulării.

Pentru a gestiona sinonime, utilizați limbajul de definiție a datelor (DDL) comenziLE CREATE SYNONYM, ALTER SYNONYM și DROP SYNONYM, ca în exemplul următor:

CREATE SYNONYM dbo.ProdsByCategory FOR TSQL.Production.ProdsByCategory;
GO
EXEC dbo.ProdsByCategory @numrows = 3, @catid = 2;

Pentru a crea un sinonim, trebuie să aveți permisiunea "CREATE SYNONYM", precum și permisiunea de a modifica schema în care va fi stocat sinonimul.

Notă

Pentru a crea un sinonim, utilizatorul trebuie să aibă permisiunea CREATE SYNONYM și să dețină sau să aibă permisiune ALTER SCHEMA în schema de destinație.

Un sinonim este un obiect "gol" care este rezolvat la obiectul sursă atunci când se face referire la momentul rulării.