Deklarowanie i przypisywanie zmiennych i synonimów

Zakończone

W języku T-SQL, podobnie jak w przypadku innych języków programowania, zmienne to obiekty, które umożliwiają tymczasowe przechowywanie wartości do późniejszego użycia. Spotkaliście się już ze zmiennymi, gdy używaliście ich do przekazywania wartości parametrów do procedur składowanych i funkcji.

W języku T-SQL należy zadeklarować zmienne przed ich zastosowaniem. Mogą mieć przypisaną wartość lub być zainicjowane w momencie ich zadeklarowania. Deklarowanie zmiennej obejmuje podanie nazwy i typu danych, jak pokazano poniżej. Aby zadeklarować zmienną, należy użyć instrukcji 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

Zmienne muszą być zadeklarowane w tym samym skrypcie, w którym są używane. Innymi słowy, wszystkie zmienne T-SQL są lokalne w obrębie partii, zarówno pod względem widoczności, jak i czasu życia. Tylko inne instrukcje w tym samym zbiorze mogą widzieć zmienną zadeklarowaną w tym zbiorze. Zmienna jest automatycznie niszczona po zakończeniu partii.

Praca ze zmiennymi

Po zadeklarowaniu zmiennej należy ją zainicjować lub przypisać jej wartość. Można to zrobić na trzy sposoby:

  • W programie SQL Server 2008 lub nowszym można zainicjować zmienną przy użyciu instrukcji DECLARE.
  • W dowolnej wersji programu SQL Server można przypisać pojedynczą (skalarną) wartość przy użyciu instrukcji SET.
  • W dowolnej wersji programu SQL Server można przypisać wartość do zmiennej przy użyciu instrukcji SELECT. Upewnij się, że instrukcja SELECT zwraca dokładnie jeden wiersz. Pusty wynik pozostawi zmienną z oryginalną wartością; więcej niż jeden wynik zwróci ostatni wynik.

W poniższym przykładzie przedstawiono trzy sposoby deklarowania i przypisywania wartości do zmiennych:

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

Spowoduje to wygenerowanie następujących wyników.

var1 var2 var3
99 ciąg Davis

Wskazówka

Aby uzyskać pełne wskazówki dotyczące zmiennych lokalnych, zapoznaj się z dokumentacją referencyjną języka T-SQL.

Praca z synonimami

W programie SQL Server synonimy zapewniają metodę tworzenia łącza lub aliasu do obiektu przechowywanego w tej samej bazie danych, a nawet w innym wystąpieniu programu SQL Server. Obiekty, które mogą mieć zdefiniowane synonimy, obejmują tabele, widoki, procedury składowane i funkcje zdefiniowane przez użytkownika.

Synonimy mogą służyć do przedstawienia zdalnego obiektu jako lokalnego lub podania alternatywnej nazwy dla obiektu lokalnego. Na przykład synonimy mogą służyć do zapewnienia warstwy abstrakcji między kodem klienta a rzeczywistymi obiektami bazy danych używanymi przez kod. Kod odwołuje się do obiektów według ich aliasów, niezależnie od rzeczywistej nazwy obiektu.

Uwaga / Notatka

Można utworzyć synonim wskazujący obiekt, który jeszcze nie istnieje. Jest to nazywane odroczonym rozpoznawaniem nazw. Silnik SQL Server nie będzie sprawdzać istnienia rzeczywistego obiektu, dopóki synonim nie zostanie użyty w trakcie działania programu.

Aby zarządzać synonimami, użyj poleceń języka definicji danych (DDL) CREATE SYNONYM, ALTER SYNONYM i DROP SYNONYM, jak w poniższym przykładzie:

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

Aby utworzyć synonim, musisz mieć uprawnienie "UTWÓRZ SYNONIM", a także uprawnienia do zmiany schematu, w którym będzie przechowywany synonim.

Uwaga / Notatka

Aby utworzyć synonim, użytkownik musi mieć uprawnienie CREATE SYNONYM i być właścicielem lub mieć uprawnienie ALTER SCHEMA w schemacie docelowym.

Synonimem jest "pusty" obiekt, który jest przypisywany do obiektu źródłowego podczas odwołań w trakcie działania programu.