探討Sql Server中的declare基本知識
前言
實(shí)戰(zhàn)探討主要來源于觸發(fā)器的Demo
1. 基本知識
@DECLARE
語句用于聲明變量
聲明的變量可以用于存儲臨時(shí)數(shù)據(jù),并在 SQL 查詢中多次引用
- 聲明變量:使用 DECLARE 語句聲明一個(gè)或多個(gè)變量
- 變量命名:變量名以 @ 開頭,后面跟隨變量名
- 變量類型:必須為每個(gè)變量指定數(shù)據(jù)類型,如 INT、VARCHAR、DATE 等
- 賦值:使用 SET 語句或在聲明時(shí)直接賦值
- 使用變量:在查詢中引用變量,可以進(jìn)行各種操作,如條件判斷、循環(huán)等
基本的語法如下:
DECLARE @variable_name datatype;
2. Demo
示例 1:簡單聲明和賦值
-- 聲明一個(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:在條件語句中使用變量
-- 聲明變量 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
對于Mysql的臨時(shí)變量基本知識如下
- 聲明變量:使用 SET 或 SELECT … INTO 語句來聲明變量
- 變量命名:變量名以 @ 開頭,后面跟隨變量名
- 變量類型:MySQL 中的變量不需要顯式聲明數(shù)據(jù)類型
- 使用變量:在查詢中引用變量,可以進(jìn)行各種操作,如條件判斷、循環(huán)等
基本語法如下:
SET @variable_name = value;
與上面同理,Demo如下:
示例 1:簡單聲明和賦值
-- 聲明并賦值變量 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:在條件語句中使用變量
– 聲明并賦值變量 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)邏輯封裝在存儲過程(或存儲函數(shù))中)
DELIMITER $$ CREATE PROCEDURE LoopExample() BEGIN DECLARE Counter INT DEFAULT 1; DECLARE MaxCount INT DEFAULT 5; -- 使用準(zhǔn)備好的語句進(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)用存儲過程 CALL LoopExample();
截圖如下:
4. 彩蛋
以下為錯(cuò)誤的Demo
對于循環(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)備好的語句進(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基本知識的文章就介紹到這了,更多相關(guān)Sql Server declare內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL數(shù)據(jù)庫連接超時(shí)時(shí)間已到的問題
這篇文章主要介紹了SQL數(shù)據(jù)庫連接超時(shí)時(shí)間已到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04在SQL?Server中使用?Try?Catch?處理異常的示例詳解
這篇文章主要介紹了如何在?SQL?Server?中使用?Try?Catch?處理異常,通過實(shí)例代碼了解 SQL Server 中的 Try-Catch 實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07SQL Server使用CROSS APPLY與OUTER APPLY實(shí)現(xiàn)連接查詢
這篇文章介紹了SQL Server使用CROSS APPLY與OUTER APPLY實(shí)現(xiàn)連接查詢的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05淺析SQL Server的聚焦使用索引和查詢執(zhí)行計(jì)劃
本文通過介紹默認(rèn)使用索引、強(qiáng)制使用聚集索引、強(qiáng)制使用非聚集索引讓我們知道對于檢索所有列結(jié)果集使用主鍵的聚集索引是最佳選擇。有興趣的朋友可以看下2016-12-12SQL Server 使用join all優(yōu)化 or 查詢速度
一個(gè)老項(xiàng)目,加載列表奇慢,超過10秒鐘, 主要涉及兩個(gè)表, user表,procuts表。因?yàn)樯婕岸鄬哟?,使用site字段保存目錄2020-09-09刪除sqlserver數(shù)據(jù)庫日志和沒有日志的數(shù)據(jù)庫恢復(fù)辦法
這篇文章主要介紹了刪除sqlserver數(shù)據(jù)庫日志和沒有日志的數(shù)據(jù)庫恢復(fù)辦法,需要的朋友可以參考下2014-06-06