Учебники

7) Переменная SQL Server

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

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

В этом уроке вы узнаете:

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

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

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

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

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

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

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

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

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

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

Как ОБЪЯВИТЬ переменную

  • Перед использованием любой переменной в пакете или процедуре, вам необходимо объявить переменную.
  • Команда 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);

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

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

  1. При объявлении переменной используется ключевое слово DECLARE.
  2. Использование SET
  3. Использование 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