SQL Server 變數使用示範(包含動態執行 SQL 語法)

宣告變數

    
DECLARE @id1 int -- 宣告變數
DECLARE @id2 int = 438; -- 宣告變數並賦值
    

在 SQL Server 中的變數名稱一定要以小老鼠(at @)符號開頭,後面加上變數資料類型,也可以宣告時就直接賦值。
常用的資料型態有: int, bigint, datetime, nvarchar, cursor

需要注意的是變數只在同一個批次(batch)中有效,也就是在一次執行中才有效。

變數賦值

除了在變數宣告的當下賦值外,還有以下方式:

SET

    
DECLARE @USER_NAME NVARCHAR(200)
SET @USER_NAME = 'Ruyut'

PRINT @USER_NAME
    

SELECT

    
DECLARE @USER_ID NVARCHAR(450)
SELECT @USER_ID = Id from Users where UserName = 'Ruyut'

PRINT @USER_ID

    

SELECT 還可以一次替多個變數賦值:
    
DECLARE @USER_ID NVARCHAR(450)
DECLARE @EMAIL NVARCHAR(450)
SELECT @USER_ID = Id, @EMAIL = Email from Users where UserName = 'Ruyut'

PRINT 'USER_ID: ' + @USER_ID + ' EMAIL: ' + @EMAIL
    

使用變數動態產生 SQL 並執行

變數也很常被用來動態執行 SQL 語法,下面是一個動態組合出 SQL 語法並執行的簡單範例:
    
DECLARE @TABLE_NAME NVARCHAR(450)
SET @TABLE_NAME = 'MyTable'

DECLARE @SQL NVARCHAR(450)
SET @SQL = 'CREATE TABLE ' + @TABLE_NAME + ' (ID INT, Name NVARCHAR(50))'

EXEC(@SQL)
    



參考資料:
Microsoft.Learn - Data types (Transact-SQL)
Microsoft.Learn - DECLARE @local_variable (Transact-SQL)

留言