Переменные SQL: объявление, установка и выбор переменной SQL Server

Что такое переменная в SQL Server?

В MS SQL переменные — это объект, который действует как заполнитель для ячейки памяти. Переменная содержит одно значение данных.

Типы переменных в SQL: локальные, глобальные

MS SQL имеет два типа переменных:

  1. Локальная переменная
  2. Глобальная переменная.

Однако пользователь может создать только локальную переменную.

На рисунке ниже поясняются два типа переменных, доступных в Сервер MS SQL.

Переменные SQL
Тип переменных в SQL Server

Локальная переменная

  • Пользователь объявляет локальную переменную.
  • По умолчанию локальная переменная начинается с @.
  • Каждая область локальной переменной имеет ограничение на текущая партия или процедура в рамках любого сеанса.

Глобальная переменная

  • Система поддерживает глобальную переменную. Пользователь не может их объявить.
  • Глобальная переменная начинается с @@
  • Он хранит информация, связанная с сеансом.

Как ОБЪЯВИТЬ переменную в 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

Вы можете присвоить значение переменной следующим образом: три способы:

  1. Во время объявления переменной с использованием ключевого слова DECLARE.
  2. Использование набора
  3. Использование SELECT

Рассмотрим все три способа подробно:

Во время объявления переменной с использованием ключевого слова DECLARE

Синтаксис T-SQL:

DECLARE { @Local_Variable [AS] Datatype [ = value ] }

Здесь после типа данных мы можем использовать '=', за которым следует присваиваемое значение.

Запрос:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

Присвоение значения переменной SQL

Использование 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

SQL ЗАДАТЬ ПЕРЕМЕННУЮ

Пример: Присвоить значение несколько переменных с помощью СЕТ.

Синтаксис:

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

SQL ЗАДАТЬ ПЕРЕМЕННУЮ

Пример: Присвоение значения переменной с помощью Скалярный подзапрос используя 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» с двумя столбцами, как показано ниже:

SQL ЗАДАТЬ ПЕРЕМЕННУЮ

В дальнейших уроках мы будем использовать таблицу Guru99.

Пример 1: Когда подзапрос возвращает в результате одну строку.

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3)
PRINT @COURSE_NAME

SQL ЗАДАТЬ ПЕРЕМЕННУЮ

Пример 2. Когда подзапрос возвращает в результате нулевую строку

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

В данном конкретном случае значение переменной — EMPTY, т. е. NULL.

SQL ЗАДАТЬ ПЕРЕМЕННУЮ

Использование 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

SQL ВЫБОР ПЕРЕМЕННОЙ

Пример: Присвоение значения нескольким переменным с помощью 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

SQL ВЫБОР ПЕРЕМЕННОЙ

Пример: присвоение значения переменной с помощью подзапроса с помощью 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

SQL ВЫБОР ПЕРЕМЕННОЙ

Пример 2: Когда подзапрос возвращает в результате нулевую строку

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

В данном конкретном случае переменная имеет значение EMPTY, т. е. NULL.

SQL ВЫБОР ПЕРЕМЕННОЙ

Пример 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

SQL ВЫБОР ПЕРЕМЕННОЙ

Запрос 2. Запрос возвращает несколько строк.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99
PRINT @COURSE_NAME

В этом особом случае значение переменной равно установить значение последней строки.

SQL ВЫБОР ПЕРЕМЕННОЙ

Запрос 3: запрос возвращает ноль строк.

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5
PRINT @COURSE_NAME

В данном конкретном случае переменная имеет значение EMPTY, т. е. NULL.

SQL ВЫБОР ПЕРЕМЕННОЙ

Другие примеры переменных SQL

Использование переменной в запросе

Запрос:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

Другая переменная SQL

Интересные факты о переменных SQL Server!

  • Локальную переменную можно отобразить с помощью PRINT, а также SELECT COMMAND.
  • Тип данных таблицы не позволяет использовать «AS» во время объявления.
  • SET соответствует стандартам ANSI, тогда как SELECT — нет.
  • Также разрешено создание локальной переменной с именем @. Мы можем объявить это, например, так:
    'DECLARE @@ as VARCHAR (10)'
    

Резюме

  • Переменные — это объект, который действует как заполнитель.
  • Существует два типа переменных: локальные и глобальные.
  • Мы можем присвоить переменную следующими тремя способами: используя 1) DECLARE 2) используя SET 3) используя SELECT