在T-SQL中變量分爲兩類,包括全局變量和局部變量
局部變量:1、局部變量必須以@作爲前綴。2、局部變量的使用是先聲明,後賦值。
全局變量:1、全部變量必須以@@作爲前綴。2、全局變量有系統定義和維護,只能讀取不能修改全局變量的值。
SQL Server2008常用的全局變量
變量名 作用
@@ERROR 返回執行的上一個Transac-SQL語句的錯誤號
@@IDENTITY 返回最後插入的標識值
@@MAX_CONNECTIONS 返回SQL Server實例允許同時進行的最大用戶連接數
@@ROWCOUNT 返回受上一語句影響的行數,如果大於20億則使用ROWCOUNT_BIG
@@SERVERNAME 返回運行SQL Server的本地服務器的名稱
@@SERVICENAME 返回SQL Server正在運行的註冊表項的名稱,若當前實例爲默認實例,則@@SERVICENAME 返回MSSQLSERVER
若當前實例是命名實例,則函數返回該實例名
@@TRANCOUNT 返回當前連接的活動事物數
@@LOCK_TIMEOUT 返回當前會話的鎖定超時設置
定義局部變量並賦值
1、聲明局部變量
語法:DECLARE @varname DataType 例如:declare @varname varchar(20)
語法說明:@varname 爲局部變量名,DataType爲變量的數據類型
2、爲局部變量賦值
語法:SET @varname=VALUE或SELECT @varname=VALUE
*注意:SET關鍵字通常將已經確定的常量賦值給局部變量。SELECT關鍵字通常將從數據庫中查詢出的結果賦值給局部變量,
前提是查詢的結果必須和變量類型保持一致,或者是可以自動轉換的類型,如果查詢的結果超過一條記錄,則取最後一條記錄
值賦給局部變量。
TABLE數據類型
T-SQL中的變量類型可以是SQL Server中除了TEXT、TEXT、IMAGE外的所有類型,較爲特殊的如TABLE類型。TABLE類型定義的變量和普通
的表結構完全相同,因此該類型變量與臨時表的作用相似
實例如下:
--TABLE類型舉例
DECLARE @MyTable TABLE(ACCOUNT_NAME varchar(20),CODE varchar(18))
--爲TABLE類型的變量賦值
INSERT @MyTable SELECT '諸葛亮','421025522122512251' UNION
SELECT '周瑜','5522586456669988555'
SELECT * FROM @MyTable
--將變量的值插入ACCOUNT表中
INSERT INTO ACCOUNT SELECT ACCOUNT_NAME,CODE FROM @MyTable
SELECT * FROM ACCOUNT
GO
GO語句
T-SQL執行到GO語句時,SQLCMD和查詢窗口將GO前面已經定義的局部變量清楚,被GO
分開的局部變量不能共享。即GO 語句是作爲批處理語句的結束標記,可以控制T-SQL
變量的作用域。
SELECT在結果中輸出,PRINT在消息中輸出
*注意:PRINT語句數出的變量要求是字符串類型,否則將使用CONVERT函數進行轉換
邏輯運算符
1、ALL關鍵字:主要用於比較特定值與結果集的所有值之間的邏輯關係,結果爲布爾值。通常與比較運算符一起使用。
2、ANY關鍵字:主要用於比較特定值與結果集的所有值之間的邏輯關係,結果爲布爾值。通常與比較運算符一起使用。
3、EXISTS關鍵字:用於判斷查詢的結果集是否存在特定數據,若果存在則返回TRUE,否則返回FALSE.