T-SQL 中區域變數(Local Variable)以 @ 開頭,作用域限於批次或預存程序內。本文透過兩個官方範例,說明宣告、賦值與查詢應用的標準寫法。
USE pubs
GO
DECLARE @find varchar(30)
SET @find = 'Ring%'
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE @find
解析:
DECLARE 宣告變數名稱與資料型別SET 賦值(也可用 SELECT @find = 'Ring%')LIKE 'Ring%'USE pubs
GO
SET NOCOUNT ON -- 關閉「受影響的行數」訊息,提升效能
GO
DECLARE @pub_id char(4), @hire_date datetime
SET @pub_id = '0877'
SET @hire_date = '1/01/93'
-- 替代寫法:單一 SELECT 多重賦值
-- SELECT @pub_id = '0877', @hire_date = '1/01/93'
SET NOCOUNT OFF
SELECT fname, lname
FROM employee
WHERE pub_id = @pub_id AND hire_date >= @hire_date
結果集:
fname lname
------------- ------------------------------
Anabela Domingues
Paul Henriot
(2 列受影響)
| 語法 | 說明 |
|---|---|
| DECLARE @var type | 宣告單一變數 |
| DECLARE @v1 type, @v2 type | 單一 DECLARE 宣告多變數,逗號分隔 |
| SET @var = value | 標準賦值方式(ANSI 標準) |
| SELECT @var = value | 可多重賦值,亦可從查詢結果賦值 |
| SET NOCOUNT ON/OFF | 控制 DONE_IN_PROC 訊息,生產環境建議 ON |
EXEC sp_executesql N'SELECT * FROM t WHERE c = @p', N'@p int', @p = @var