iT邦幫忙

DAY 15
10

T-SQL 應用之美系列 第 15

如何在 T-SQL 中宣告變數

每種程式語言都會提供宣告變數的指令,T-SQL 自然也不例外。
在 T-SQL 中,需要使用到變數,不外乎下面幾種情況:

●將參數傳給預存程序或是函式(請參考:「使用流程控制:BEGIN...END 與 RETURN」
●控制迴圈的執行(請參考:「使用流程控制:WHILE、BREAK 與 CONTINUE」
●在 IF 陳述式中,作為條件判斷的依據(請參考:「使用流程控制:GOTO」
●在 WHERE 陳述式中,作為篩選條件的依據

相信大家都知道,變數有分區域變數(Local Variable)與全域變數(Global Variable),然而在 Microsoft SQL Server 裡,所有的變數都是區域變數,也就是說,所宣告的變數只能夠在同一個批次、預存程序或該變數所定義的區塊裡面,被用到。

要宣告變數,只要使用 DECLARE 陳述式就可以了,要注意的是,變數名稱的開頭必須有 @ 符號。例如下面這段程式碼,就是宣告一個名稱為 count 的整數資料型別之變數:

DECLARE @count int

一個 DECLARE 陳述式可以同時宣告多個變數,變數跟變數之間,用逗號來分隔:

DECLARE @count int, @x int, @y nvarchar(10)

當變數被宣告之後,該變數的初始值會是 NULL,所以要利用 SET 或 SELECT 陳述式來指派適當的值給該變數:

DECLARE @count int, @x int, @y nvarchar(10)

-- 檢查變數的初始值
SELECT [@count] = @count, [@x] = @x, [@y] = @y

-- 使用 SET 指派值
SET @count = 1

-- 使用 SELECT 指派值
SELECT @x = 0, @y = 'alexc'

-- 檢查變數的設定值
SELECT [@count] = @count, [@x] = @x, [@y] = @y

執行的結果畫面:

在一開始時,我們就提到了使用到變數的時機,前面 3 個都已經討論過了,就只有最後 1 個還沒有提到。接著就來討論這個情況,假設要從 AdventureWorks 資料庫的 HumanResources.Employee 資料表中,找出員工編號小於等於 10 的員工,可以使用下面的程式碼:

USE AdventureWorks
GO

DECLARE @EmpID int
SET @EmpID = 10

SELECT 員工編號 = EmployeeID,
	性別 = CASE Gender
			WHEN 'M' THEN N'男'
			WHEN 'F' THEN N'女'
		END,
	婚姻 = CASE MaritalStatus
			WHEN 'S' THEN N'單身'
			WHEN 'M' THEN N'已婚'
		END
FROM HumanResources.Employee
WHERE EmployeeID <= @EmpID

執行的結果畫面:


上一篇
使用流程控制:GOTO
下一篇
如何使用次序函數於查詢資料時,針對某個欄位進行排名(上)
系列文
T-SQL 應用之美30

尚未有邦友留言

立即登入留言