探討Sql Server中的declare基本知識(shí)
前言
實(shí)戰(zhàn)探討主要來(lái)源于觸發(fā)器的Demo
1. 基本知識(shí)
@DECLARE 語(yǔ)句用于聲明變量
聲明的變量可以用于存儲(chǔ)臨時(shí)數(shù)據(jù),并在 SQL 查詢中多次引用
- 聲明變量:使用 DECLARE 語(yǔ)句聲明一個(gè)或多個(gè)變量
- 變量命名:變量名以 @ 開頭,后面跟隨變量名
- 變量類型:必須為每個(gè)變量指定數(shù)據(jù)類型,如 INT、VARCHAR、DATE 等
- 賦值:使用 SET 語(yǔ)句或在聲明時(shí)直接賦值
- 使用變量:在查詢中引用變量,可以進(jìn)行各種操作,如條件判斷、循環(huán)等
基本的語(yǔ)法如下:
DECLARE @variable_name datatype;
2. Demo
示例 1:簡(jiǎn)單聲明和賦值
-- 聲明一個(gè)整數(shù)變量,還可直接這樣定義 DECLARE @MyNumber INT=10; DECLARE @MyNumber INT; -- 為變量賦值 SET @MyNumber = 10; -- 使用變量 SELECT @MyNumber AS 'My Number';
截圖如下:

示例 2:在查詢中使用變量
-- 聲明變量 DECLARE @FirstName VARCHAR(50); DECLARE @LastName VARCHAR(50); DECLARE @FullName VARCHAR(100); -- 賦值 SET @FirstName = 'John'; SET @LastName = 'Doe'; -- 連接字符串 SET @FullName = @FirstName + ' ' + @LastName; -- 使用變量 SELECT @FullName AS 'Full Name';
截圖如下:

示例 3:在條件語(yǔ)句中使用變量
-- 聲明變量
DECLARE @Threshold INT;
DECLARE @Result VARCHAR(50);
-- 賦值
SET @Threshold = 50;
-- 條件判斷
IF @Threshold > 100
SET @Result = 'Above 100';
ELSE
SET @Result = '100 or Below';
-- 使用變量
SELECT @Result AS 'Result';截圖如下:

示例 4:在循環(huán)中使用變量
-- 聲明變量
DECLARE @Counter INT;
DECLARE @MaxCount INT;
-- 賦值
SET @Counter = 1;
SET @MaxCount = 5;
-- 循環(huán)
WHILE @Counter <= @MaxCount
BEGIN
PRINT 'Counter is ' + CAST(@Counter AS VARCHAR(10));
SET @Counter = @Counter + 1;
END截圖如下:

3. 拓展Mysql
對(duì)于Mysql的臨時(shí)變量基本知識(shí)如下
- 聲明變量:使用 SET 或 SELECT … INTO 語(yǔ)句來(lái)聲明變量
- 變量命名:變量名以 @ 開頭,后面跟隨變量名
- 變量類型:MySQL 中的變量不需要顯式聲明數(shù)據(jù)類型
- 使用變量:在查詢中引用變量,可以進(jìn)行各種操作,如條件判斷、循環(huán)等
基本語(yǔ)法如下:
SET @variable_name = value;
與上面同理,Demo如下:
示例 1:簡(jiǎn)單聲明和賦值
-- 聲明并賦值變量 SET @MyNumber = 10; -- 使用變量 SELECT @MyNumber AS 'My Number';
截圖如下:

示例 2:在查詢中使用變量
-- 聲明并賦值變量 SET @FirstName = 'John'; SET @LastName = 'Doe'; -- 連接字符串 SET @FullName = CONCAT(@FirstName, ' ', @LastName); -- 使用變量 SELECT @FullName AS 'Full Name';
截圖如下:

示例 3:在條件語(yǔ)句中使用變量
– 聲明并賦值變量 SET @Threshold = 50; – 條件判斷 IF @Threshold > 100 THEN SET @Result = ‘Above 100'; ELSE SET @Result = ‘100 or Below'; END IF; – 使用變量 SELECT @Result AS ‘Result';
截圖如下:

示例 4:在循環(huán)中使用變量 (必須將循環(huán)邏輯封裝在存儲(chǔ)過(guò)程(或存儲(chǔ)函數(shù))中)
DELIMITER $$
CREATE PROCEDURE LoopExample()
BEGIN
DECLARE Counter INT DEFAULT 1;
DECLARE MaxCount INT DEFAULT 5;
-- 使用準(zhǔn)備好的語(yǔ)句進(jìn)行循環(huán)
PREPARE stmt FROM 'SELECT ? AS Counter';
WHILE Counter <= MaxCount DO
EXECUTE stmt USING @Counter;
SET Counter = Counter + 1;
END WHILE;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
-- 調(diào)用存儲(chǔ)過(guò)程
CALL LoopExample();截圖如下:

4. 彩蛋
以下為錯(cuò)誤的Demo
對(duì)于循環(huán)遍歷,Mysql中不適合使用if,需要使用case
-- 聲明并賦值變量
SET @Threshold = 50;
-- 條件判斷
IF @Threshold > 100 THEN
SET @Result = 'Above 100';
ELSE
SET @Result = '100 or Below';
END IF;
-- 使用變量
SELECT @Result AS 'Result';以及不可直接使用如下方式
-- 聲明并賦值變量
SET @Counter = 1;
SET @MaxCount = 5;
-- 使用準(zhǔn)備好的語(yǔ)句進(jìn)行循環(huán)
PREPARE stmt FROM 'SELECT ? AS Counter';
WHILE @Counter <= @MaxCount DO
EXECUTE stmt USING @Counter;
SET @Counter = @Counter + 1;
END WHILE;
DEALLOCATE PREPARE stmt;到此這篇關(guān)于Sql Server中的declare基本知識(shí)的文章就介紹到這了,更多相關(guān)Sql Server declare內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQLSERVER?出現(xiàn)死鎖查找方法和解決辦法(推薦)
這篇文章主要介紹了SQLSERVER?出現(xiàn)死鎖查找方法和解決辦法(推薦),文中講解了查詢死鎖語(yǔ)句,殺死死鎖的解決方法,需要的朋友可以參考下2024-02-02
SqlServer 數(shù)據(jù)庫(kù) 三大 范式
本文將基于三大范式原則,結(jié)合具體的實(shí)例做簡(jiǎn)要分析,對(duì)SqlServer 數(shù)據(jù)庫(kù) 三大 范式相關(guān)知識(shí)感興趣的朋友一起看看吧2019-11-11
使用mongovue把sqlserver數(shù)據(jù)導(dǎo)入mongodb的步驟
MongoVUE免費(fèi)版支持MySQL導(dǎo)入Mongo,所以思路是SQLServer導(dǎo)入MySQL,再?gòu)腗ySQL導(dǎo)入Mongo。2014-01-01
SQL?Server快速?gòu)氐仔遁d實(shí)例方法分享
最近在安裝了SQL Server后,當(dāng)由于某些原因我們需要卸載它時(shí),我們應(yīng)該怎么操作呢?這篇文章主要給大家介紹了關(guān)于SQL?Server快速?gòu)氐仔遁d的相關(guān)資料,需要的朋友可以參考下2023-10-10
一些SQL Server存儲(chǔ)過(guò)程參數(shù)及例子
下面是sql server多版本下的存儲(chǔ)過(guò)程參數(shù)及例子2008-08-08
SQL Server 數(shù)據(jù)庫(kù)分離與附加(圖文教程)
SQL Server 數(shù)據(jù)庫(kù)分離與附加(圖文教程),需要的朋友可以參考一下2013-05-05

