Переменные SQL: объявление, установка и выбор переменной SQL Server
Что такое переменная в SQL Server?
В MS SQL переменные — это объект, который действует как заполнитель для ячейки памяти. Переменная содержит одно значение данных.
Типы переменных в SQL: локальные, глобальные
MS SQL имеет два типа переменных:
- Локальная переменная
- Глобальная переменная.
Однако пользователь может создать только локальную переменную.
На рисунке ниже поясняются два типа переменных, доступных в Сервер MS SQL.
Локальная переменная
- Пользователь объявляет локальную переменную.
- По умолчанию локальная переменная начинается с @.
- Каждая область локальной переменной имеет ограничение на текущая партия или процедура в рамках любого сеанса.
Глобальная переменная
- Система поддерживает глобальную переменную. Пользователь не может их объявить.
- Глобальная переменная начинается с @@
- Он хранит информация, связанная с сеансом.
Как ОБЪЯВИТЬ переменную в SQL
- Прежде чем использовать какую-либо переменную в пакете или процедуре, вам необходимо объявить переменную.
- Команда DECLARE используется для переменной DECLARE, которая действует как заполнитель для ячейки памяти.
- Только после объявления переменной переменную можно использовать в последующей части пакета или процедуры.
Синтаксис TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Правила:
- Инициализация — необязательная вещь при объявлении.
- По умолчанию DECLARE инициализирует переменную значением NULL.
- Использование ключевого слова «AS» не является обязательным.
- Чтобы объявить более одной локальной переменной, поставьте запятую после определения первой локальной переменной, а затем определите имя следующей локальной переменной и тип данных.
Примеры объявления переменной
Запрос: с «AS»
DECLARE @COURSE_ID AS INT;
Запрос: без «AS»
DECLARE @COURSE_NAME VARCHAR (10);
Запрос: ОБЪЯВИТЬ две переменные
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Присвоение значения переменной SQL
Вы можете присвоить значение переменной следующим образом: три способы:
- Во время объявления переменной с использованием ключевого слова DECLARE.
- Использование набора
- Использование SELECT
Рассмотрим все три способа подробно:
Во время объявления переменной с использованием ключевого слова DECLARE
Синтаксис T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Здесь после типа данных мы можем использовать '=', за которым следует присваиваемое значение.
Запрос:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Использование SQL SET VARIABLE
Иногда нам хочется разделить объявление и инициализацию. SET можно использовать для присвоения значений переменной после объявления переменной. Ниже приведены различные способы присвоения значений с помощью SET:
Пример: Присвоение значения переменной с помощью SET.
Синтаксис:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Запрос:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Пример: Присвоить значение несколько переменных с помощью СЕТ.
Синтаксис:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Правило: Одно ключевое слово SET можно использовать для присвоения значения только одна переменная.
Запрос:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Пример: Присвоение значения переменной с помощью Скалярный подзапрос используя SET
Синтаксис:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Правила:
- Заключите запрос в круглые скобки.
- Запрос должен быть скалярным. Скалярный запрос — это запрос, результаты которого представляют собой одну строку и один столбец. В противном случае запрос выдаст ошибку.
- Если запрос возвращает ноль строк, то переменной присваивается значение EMPTY, т. е. NULL.
Предположение: Предположим, что у нас есть таблица «Guru99» с двумя столбцами, как показано ниже:
В дальнейших уроках мы будем использовать таблицу Guru99.
Пример 1: Когда подзапрос возвращает в результате одну строку.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Пример 2. Когда подзапрос возвращает в результате нулевую строку
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
В данном конкретном случае значение переменной — EMPTY, т. е. NULL.
Использование SQL SELECT VARIABLE
Как и в случае с SET, мы также можем использовать SELECT для присвоения значений переменным, после объявления переменной с помощью DECLARE. Ниже приведены различные способы присвоения значения с помощью SELECT:
Пример: Присвоение значения переменной с помощью SELECT.
Синтаксис:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Запрос:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Пример: Присвоение значения нескольким переменным с помощью SELECT.
Синтаксис:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Правила: В отличие от SET, SELECT можно использовать для присвоения значения. к нескольким переменным разделены запятая.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Пример: присвоение значения переменной с помощью подзапроса с помощью SELECT.
Синтаксис:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Правила:
- Заключите запрос в круглые скобки.
- Запрос должен быть скалярным. Скалярный запрос — это запрос, результатом которого является одна строка и один столбец. В противном случае запрос выдаст ошибку.
- Если запрос возвращает ноль строк, то переменная имеет значение EMPTY, т. е. NULL.
- Пересмотрите нашу таблицу Guru99.
Пример 1: Когда подзапрос возвращает в результате одну строку.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Пример 2: Когда подзапрос возвращает в результате нулевую строку
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
В данном конкретном случае переменная имеет значение EMPTY, т. е. NULL.
Пример 3: Присвойте значение переменной с помощью обычного оператора SELECT.
Синтаксис:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Правила:
- В отличие от SET, если запрос дает несколько строк, то значению переменной присваивается значение последней строки.
- Если запрос возвращает ноль строк, то переменной присваивается значение EMPTY, т. е. NULL.
Запрос 1: запрос возвращает одну строку.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Запрос 2. Запрос возвращает несколько строк.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
В этом особом случае значение переменной равно установить значение последней строки.
Запрос 3: запрос возвращает ноль строк.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
В данном конкретном случае переменная имеет значение EMPTY, т. е. NULL.
Другие примеры переменных SQL
Использование переменной в запросе
Запрос:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Интересные факты о переменных SQL Server!
- Локальную переменную можно отобразить с помощью PRINT, а также SELECT COMMAND.
- Тип данных таблицы не позволяет использовать «AS» во время объявления.
- SET соответствует стандартам ANSI, тогда как SELECT — нет.
- Также разрешено создание локальной переменной с именем @. Мы можем объявить это, например, так:
'DECLARE @@ as VARCHAR (10)'
Резюме
- Переменные — это объект, который действует как заполнитель.
- Существует два типа переменных: локальные и глобальные.
- Мы можем присвоить переменную следующими тремя способами: используя 1) DECLARE 2) используя SET 3) используя SELECT