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 @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)'
    

Oбобщение

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

Обобщете тази публикация с: