SQL променливи: SQL Server деклариране, задаване и избор на променлива
Какво е променлива в SQL Server?
В MS SQL променливите са обектът, който действа като контейнер за място в паметта. Променливата съдържа единична стойност на данните.
Типове променливи в SQL: локални, глобални
MS SQL има два типа променливи:
- Локална променлива
- Глобална променлива.
Потребителят обаче може да създаде само локална променлива.
Фигурата по-долу обяснява два типа налични променливи MS SQL сървър.

Локална променлива
- Потребителят декларира локалната променлива.
- По подразбиране локалната променлива започва с @.
- Всеки обхват на локална променлива има ограничение до текуща партида или процедура в рамките на дадена сесия.
Глобална променлива
- Системата поддържа глобалната променлива. Потребителят не може да ги декларира.
- Глобалната променлива започва с @@
- Съхранява информация, свързана със сесията.
Как да ДЕКЛАРИРАМЕ променлива в 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 променлива
Можете да присвоите стойност на променлива по следния начин три начини:
- По време на деклариране на променлива с помощта на ключова дума DECLARE.
- Използване на SET
- Използване на SELECT
Нека да разгледаме и трите начина в детайли:
По време на деклариране на променлива с помощта на ключова дума DECLARE
Синтаксис на T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Тук след тип данни можем да използваме '=', последвано от стойност, която да бъде присвоена
Запитване:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Използване на 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
Пример: Присвояване на стойност на множество променливи използвайки 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
Пример: Присвояване на стойност на променлива с 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“ с две колони, както е показано по-долу:
Ще използваме таблицата "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
В този конкретен случай стойността на променливата е EMPTY, т.е. NULL.
Използване на 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
Пример: Присвояване на стойност на множество променливи с помощта на 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
В този конкретен случай променливата е EMPTY, т.е. 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
В този конкретен случай променливата е EMPTY, т.е. NULL.
Други примери за SQL променливи
Използване на променлива в заявката
Запитване:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Интересни факти за променливите на SQL Server!
- Локална променлива може да бъде показана с помощта на PRINT, както и SELECT COMMAND
- Типът данни на таблицата не позволява използването на „AS“ по време на декларация.
- SET отговаря на стандартите ANSI, докато SELECT не.
- Създаването на локална променлива с име като @ също е разрешено. Можем да го декларираме като например:
'DECLARE @@ as VARCHAR (10)'
Oбобщение
- Променливите са обектът, който действа като контейнер.
- Съществуват два вида променливи: локални и глобални
- Можем да присвоим променливата по следните три начина: докато използваме 1) DECLARE 2) използваме SET 3) използваме SELECT














