Змінні SQL: оголошення, встановлення та вибір змінної SQL Server

Що таке змінна в SQL Server?

У MS SQL змінні є об’єктом, який діє як заповнювач місця пам’яті. Змінна містить одне значення даних.

Типи змінних у SQL: локальні, глобальні

У MS SQL є два типи змінних:

  1. Локальна змінна
  2. Глобальна змінна.

Однак користувач може створити лише локальну змінну.

На малюнку нижче пояснюються два типи доступних змінних MS SQL сервер.

Змінні SQL
Тип змінних у SQL Server

Локальна змінна

  • Користувач оголошує локальну змінну.
  • За замовчуванням локальна змінна починається з @.
  • Кожна область видимості локальної змінної має обмеження на поточна партія або процедура протягом будь-якого сеансу.

Глобальна змінна

  • Система підтримує глобальну змінну. Користувач не може їх оголосити.
  • Глобальна змінна починається з @@
  • Він зберігає інформація, пов'язана з сеансом.

Як ОГОЛОШИТИ змінну в SQL

  • Перш ніж використовувати будь-яку змінну в пакеті або процедурі, вам потрібно оголосити змінну.
  • Команда 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 дві змінні

DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);

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

Ви можете призначити значення змінній наступним чином три способи:

  1. Під час оголошення змінної за допомогою ключового слова DECLARE.
  2. Використання SET
  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 SET VARIABLE

Приклад: призначити значення кілька змінних за допомогою 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

SQL SET VARIABLE

Приклад: Присвоєння значення змінній за допомогою a Скалярний підзапит за допомогою 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 SET VARIABLE

Ми будемо використовувати таблицю «Guru99» у подальших уроках

Приклад 1: Коли підзапит повертає один рядок як результат.

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

SQL SET VARIABLE

Приклад 2: коли підзапит повертає нульовий рядок як результат

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

У цьому конкретному випадку значення змінної є EMPTY, тобто NULL.

SQL SET VARIABLE

Використання 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 VARIABLE

Приклад: Присвоєння значення декільком змінним за допомогою 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 VARIABLE

Приклад: присвоєння значення змінній за допомогою підзапиту за допомогою 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 SELECT VARIABLE

Приклад 2: Коли підзапит повертає в результаті нульовий рядок

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

У цьому конкретному випадку змінна має значення EMPTY, тобто NULL.

SQL SELECT VARIABLE

Приклад 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 SELECT VARIABLE

Запит 2: запит повертає кілька рядків.

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

У цьому особливому випадку значення змінної є встановити значення останнього рядка.

SQL SELECT VARIABLE

Запит 3: запит повертає нуль рядків.

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

У цьому конкретному випадку змінна має значення EMPTY, тобто NULL.

SQL SELECT VARIABLE

Інші приклади змінних 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