首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 區域變數宣告與使用完整指南

     編輯:關於SqlServer

前言

T-SQL 中區域變數(Local Variable)以 @ 開頭,作用域限於批次或預存程序內。本文透過兩個官方範例,說明宣告、賦值與查詢應用的標準寫法。

範例 A:單一變數查詢姓氏以「Ring」開頭的作者

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%'

範例 B:多變數宣告與查詢特定出版社 1993 年後受僱員工

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

進階應用提示

  • 變數作為動態 SQL 參數:EXEC sp_executesql N'SELECT * FROM t WHERE c = @p', N'@p int', @p = @var
  • Table-valued 參數:SQL Server 2008+ 支援傳遞表型別變數給預存程序
  • 範圍限制:批次結束(GO)或預存程序結束即銷毀,不可跨批次存取
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved