Что такое переменная?
В MS SQL переменные — это объект, который выступает в качестве заполнителя для области памяти. Переменная содержит одно значение данных.
В этом уроке вы узнаете:
- Что такое переменная?
- Типы переменных: локальные, глобальные
- Как ОБЪЯВИТЬ переменную
- Присвоение значения переменному
- При объявлении переменной используется ключевое слово DECLARE.
- Использование SET
- ИСПОЛЬЗОВАНИЕ ВЫБРАТЬ
- Другие примеры
- Интересные факты!
Типы переменных: локальные, глобальные
MS SQL имеет два типа переменных:
- Локальная переменная
- Глобальная переменная.
Однако пользователь может создать только локальную переменную.
Ниже на рисунке показаны два типа переменных, доступных на сервере MS SQL.
Локальная переменная:
- Пользователь объявляет локальную переменную.
- По умолчанию локальная переменная начинается с @.
- Каждая область локальной переменной имеет ограничение на текущий пакет или процедуру в пределах любого данного сеанса.
Глобальная переменная:
- Система поддерживает глобальную переменную . Пользователь не может их объявить.
- Глобальная переменная начинается с @@
- Он хранит информацию о сеансе .
Как ОБЪЯВИТЬ переменную
- Перед использованием любой переменной в пакете или процедуре, вам необходимо объявить переменную.
- Команда DECLARE используется для переменной DECLARE, которая выступает в качестве заполнителя для ячейки памяти.
- Только после того, как объявление сделано, переменная может использоваться в последующей части пакета или процедуры.
Синтаксис TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Правила:
- Инициализация — необязательная вещь при объявлении.
- По умолчанию, DECLARE инициализирует переменную в NULL.
- Использование ключевого слова «AS» необязательно.
- Чтобы объявить более одной локальной переменной, используйте запятую после определения первой локальной переменной, а затем определите имя следующей локальной переменной и тип данных.
Примеры объявления переменной:
Запрос: с «КАК»
DECLARE @COURSE_ID AS INT;
Запрос: без ‘AS’
DECLARE @COURSE_NAME VARCHAR (10);
Запрос: ОБЪЯВИТЬ две переменные
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Присвоение значения переменному
Вы можете присвоить значение переменной следующими тремя способами :
- При объявлении переменной используется ключевое слово DECLARE.
- Использование SET
- Использование SELECT
Давайте посмотрим на все три способа в деталях:
При объявлении переменной используется ключевое слово DECLARE.
Синтаксис T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Здесь после типа данных мы можем использовать ‘=’, за которым следует присвоить значение
Запрос:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Использование SET
Иногда мы хотим разделить объявление и инициализацию. SET может использоваться для назначения значений переменной, после объявления переменной. Ниже приведены различные способы назначения значений с помощью SET:
Пример : присвоение значения переменной с помощью SET
Синтаксис:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Запрос:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Пример : присвоить значение нескольким переменным с помощью SET.
Синтаксис:
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
В данном конкретном случае значением переменной является ПУСТО, то есть ПУСТО (NULL).
ИСПОЛЬЗОВАНИЕ ВЫБРАТЬ
Так же, как 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
В данном конкретном случае переменная имеет значение ПУСТО, то есть 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
В этом конкретном случае переменная является ПУСТОЙ, т. Е. NULL.
Другие примеры
Использование переменной в запросе
Запрос:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Интересные факты!
- Локальная переменная может быть отображена с помощью PRINT, а также SELECT COMMAND
- Таблица Тип данных не позволяет использовать «AS» во время объявления.
- SET соответствует стандартам ANSI, а SELECT — нет.
- Создание локальной переменной с именем как @ также разрешено. Мы можем объявить это как, например:
'DECLARE @@ as VARCHAR (10)'
Резюме:
- Переменные — это объект, который действует как заполнитель.
- Существуют два типа переменных: локальный и глобальный
- Мы можем назначить переменную следующими тремя способами:
При использовании DECLARE
Использование SET
USING SELECT