Объявление и назначение переменных и синонимов
В T-SQL, как и в других языках программирования, переменные — это объекты, которые позволяют временно сохранять значение для последующего использования. Вы уже столкнулись с переменными при их использовании для передачи значений параметров хранимым процедурам и функциям.
В T-SQL переменные должны быть объявлены до их использования. Им может быть присвоено значение или они могут быть инициализированы при объявлении. Объявление переменной включает указание имени и типа данных, как показано ниже. Чтобы объявить переменную, необходимо использовать инструкцию 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
Переменные должны быть объявлены в том же пакете, в котором на них ссылаются. Другими словами, все переменные T-SQL являются локальными в области пакета, как в видимости, так и в времени существования. Только другие инструкции в том же пакете могут видеть переменную, объявленную в пакете инструкций. Переменная автоматически уничтожается при завершении пакета.
Работа с переменными
После объявления переменной необходимо инициализировать ее или назначить значение. Это можно сделать тремя способами:
- В SQL Server 2008 или более поздней версии можно инициализировать переменную с помощью инструкции DECLARE.
- В любой версии SQL Server можно назначить одно (скалярное) значение с помощью инструкции SET.
- В любой версии SQL Server можно назначить значение переменной с помощью инструкции SELECT. Убедитесь, что инструкция SELECT возвращает ровно одну строку. Пустой результат покидает переменную с исходным значением; Несколько результатов возвращают последний результат.
В следующем примере показаны три способа объявления и назначения значений переменным:
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
Это приводит к возникновению следующих результатов.
| var1 | var2 | var3 |
|---|---|---|
| 99 | струна | Дэвис |
Подсказка
Полные рекомендации по локальным переменным см. в справочной документации по T-SQL.
Работа с синонимами
В SQL Server синонимы предоставляют метод создания ссылки или псевдонима для объекта, хранящегося в той же базе данных или даже в другом экземпляре SQL Server. Объекты, которые могут иметь синонимы, определенные для них, включают таблицы, представления, хранимые процедуры и определяемые пользователем функции.
Синонимы можно использовать, чтобы сделать удалённый объект выглядеть как локальный или присвоить альтернативное имя локальному объекту. Например, синонимы можно использовать для предоставления уровня абстракции между клиентским кодом и фактическими объектами базы данных, используемыми кодом. Код ссылается на объекты по их псевдонимам независимо от фактического имени объекта.
Замечание
Можно создать синоним, указывающий на объект, который еще не существует. Это называется отложенным разрешением имен. Подсистема SQL Server не проверяет наличие фактического объекта до тех пор, пока синоним не будет использоваться во время выполнения.
Чтобы управлять синонимами, используйте команды языка определения данных (DDL) CREATE SYNONYM, ALTER SYNONYM и DROP SYNONYM, как показано в следующем примере:
CREATE SYNONYM dbo.ProdsByCategory FOR TSQL.Production.ProdsByCategory;
GO
EXEC dbo.ProdsByCategory @numrows = 3, @catid = 2;
Чтобы создать синоним, необходимо иметь разрешение CREATE SYNONYM, а также разрешение на изменение схемы, в которой будет храниться синоним.
Замечание
Чтобы создать синоним, пользователь должен иметь разрешение CREATE SYNONYM и либо владеть конечной схемой, либо иметь в ней разрешение ALTER SCHEMA.
Синоним — это "пустой" объект, который привязывается к исходному объекту при обращении к нему во время выполнения.