中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL?Server在T-SQL語句中怎么使用變量

發布時間:2022-05-21 14:49:03 來源:億速云 閱讀:373 作者:iii 欄目:開發技術

這篇文章主要介紹了SQL Server在T-SQL語句中怎么使用變量的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SQL Server在T-SQL語句中怎么使用變量文章都會有所收獲,下面我們一起來看看吧。

變量的種類

在T-SQL中,變量按生存范圍可以分為全局變量(Global Variable)和局部變量(Local Variable)

  • 全局變量是由系統定義的,在整個SQL Server實例內都能訪問到的變量,全部變量以@@開頭,用戶只能訪問,不能賦值。

  • 局部變量由用戶定義,生命周期只在一個批處理內有效。局部變量以@作為第一個字符,由用戶自己定義和復制。

示例:

DECLARE @i int    --聲明一個int類型局部變量
  SET @i = 10      --通過SET對局部變量進行賦值

  DECLARE @Name nvarchar(20)    --聲明一個nvarchar(20)類型變量
  SET @Name = '張飛'

  PRINT @@VERSION     --全部變量,只能讀取,不能賦值
  SET @@VERSION = '123'    --此行代碼報錯

全局變量

全局變量的用途

  • 全局變量是SQL Server系統內部使用的變量,其作用范圍并不僅僅局限于某一程序,而是任何程序均可以隨時調用。

  • 全局變量通常存儲一些SQL Server的配置設定值和統計數據。用戶可以在程序中用全局變量來測試系統的設定值或者是Transact-SQL命令執行后的狀態值。

全局變量列表

select @@CONNECTIONS; --返回自上次SQL啟動以來連接或試圖連接的次數。
select @@CPU_BUSY / 100; --返回自上次啟動SQL 以來 CPU 的工作時間,單位為毫秒
select @@CURSOR_ROWS as w; --返回被打開的游標中還未被讀取的有效數據行的行數
select @@DATEFIRST as w; --返回使用SET DATEFIRST 命令而被賦值的DATAFIRST ,用來指定每周的第一天是星期幾
select @@FETCH_STATUS as w; --返回上一次FETCH 語句的狀態值(0:成功,-1失敗或行超過結果集,-2行沒找到)
select @@DBTS as w; --為當前數據庫返回當前 timestamp 數據類型的值。這一 timestamp 值保證在數據庫中是唯一的。
select @@ERROR; --返回最后執行的 Transact-SQL 語句的錯誤代碼(integer) (0,表示沒錯誤;1,表示有錯誤)
select @@IDENTITY as w; --返回最后插入的標識值
select @@IDLE as w; --返回SQL自上次啟動后閑置的時間,單位為毫秒
select @@IO_BUSY as w; --返回SQL自上次啟動后用于執行輸入和輸出操作的時間,單位為毫秒
select @@LANGID as w; --返回當前所使用語言的本地語言標識符(ID)。
select @@LANGUAGE as w; --返回當前使用的語言名
select @@LOCK_TIMEOUT as w; --當前會話的當前鎖超時設置,單位為毫秒。
select @@MAX_CONNECTIONS as w; --返回SQL上允許的同時用戶連接的最大數。返回的數不必為當前配置的數值
select @@MAX_PRECISION as w; --返回 decimal 和 numeric 數據類型所用的精度級別,即該服務器中當前設置的精度。默認最大精度38。
select @@OPTIONS as w; --返回當前 SET 選項的信息。
select @@PACK_RECEIVED as w; --返回SQL自啟動后從網絡上讀取的輸入數據包數目。
select @@PACK_SENT as w; --返回SQ自上次啟動后寫到網絡上的輸出數據包數目。
select @@PACKET_ERRORS as w; --返回自SQL啟動后,在SQL連接上發生的網絡數據包錯誤數。
select @@ROWCOUNT as w; --返回上一次語句影響的數據行的行數
select @@SERVERNAME as w; --返回運行SQL服務器名稱。
select @@SERVICENAME as w; --返回SQL正在其下運行的注冊表鍵名
select @@TIMETICKS as w; --返回SQL服務器一刻度的微秒數
select @@TOTAL_ERRORS as w; --返回 SQL服務器自啟動后,所遇到的磁盤讀/寫錯誤數。
select @@TOTAL_READ as w; --返回 SQL服務器自啟動后讀取磁盤的次數。
select @@TOTAL_WRITE as w; --返回SQL服務器自啟動后寫入磁盤的次數。
select @@TRANCOUNT as w; --返回當前連接的活動事務數。
select @@VERSION as w; --返回當前安裝的SQL Server 的日期版本處理器

局部變量

局部變量的用途

  • 在循環中記錄循環次數

  • 儲存存儲過程或者函數的返回值

局部變量的聲明

局部變量的聲明必須以"DECLARE"作為關鍵字,變量的命名必須以"@"作為變量名的第一個字符,必須為所聲明的變量提供一個數據類型和數據長度。
如:

DECLARE @Name nvarchar(20)

注意:局部變量的數據類型不能為Text,ntext,和Image類型,當對于字符型變量只提供數據類型沒有提供數據長度時,數據長度默認為1.

設置變量中的值(賦值)

有兩種設置變量值方法。可以使用SELECE語句或者SET語句。從功能上看,它們的作用幾乎是相同的,不同的是SELECT語句允許元數據值來自SELECT語句中的某一列。

1、使用SET設置變量

DECLARE @i int,@j int
  set @i = 10;
  set @j = 20;
  select @i + @j

用查詢到的值設置變量:

DECLARE @i int
  SET @i = (select MAX(Age) from Person)  --當使用SET時如果返回結果有多行也會報錯。同時如果返回多條記錄也報錯
  SELECT @i

2、使用SELECT設置變量:

當變量中存儲的信息來源于查詢時,經常使用SELECT給變量賦值,語法比較簡便。

DECLARE @i int
  SELECT @i = 100
  SELECT @i

查詢的信息為變量賦值:

DECLARE @i int
   SELECT @i = Age from Person_1 order by Id desc    --當返回多個值時用最后一個賦值
   PRINT @i

SELECT同時設置多個值:

DECLARE @Name varchar(20)
  DECLARE @i int
  SELECT @i = 10, @Name = '張飛'

3、當表達式未返回值時

  • 使用SET對局部變量賦值時,如果賦值表達式未返回值,則局部變量變為NULL;而SELECT對表達式賦值時,如果表達式未返回值,則局部變量保持原值。

  • 一切只聲明沒有賦值的局部變量的初始值都為”NULL”。

例如:

DECLARE @Name nvarchar(50) 
  SET @Name = '黃飛鴻'
  select @Name = Name from Person_1 where Id = 100    --100不存在記錄,此處如果改為一個Id存在的,且Name列不為null的值,則@Name變量的值就變了
  PRINT @Name  --依然打印的是黃飛鴻

可見,當SELECT表達式賦值時,如果為返回值,則保持原值。

局部表變量

局部表變量是一個特殊的局部變量。和臨時表不同,局部表變量具有一切局部變量的特點。在查詢中,因為局部表變量是存在內存中,而不是硬盤中,所以速度會遠遠快于臨時表或是實際表。局部表變量最多的使用是在查詢中充當多個表做連接時的中間表

DECLARE @TempTable TABLE    --聲明一個局部表變量
(
    Id int,
    Name nvarchar(50)
)
INSERT INTO @TempTable     --用查詢到的作為數據插入到局部表變量
SELECT Id,Name FROM Person_1

SELECT * FROM @TempTable    --和普通表一樣用,可以各種join,子查詢等等。

關于“SQL Server在T-SQL語句中怎么使用變量”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SQL Server在T-SQL語句中怎么使用變量”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合江县| 乐陵市| 西乌珠穆沁旗| 靖宇县| 武冈市| 大理市| 包头市| 蓝田县| 三台县| 穆棱市| 深水埗区| 德江县| 华容县| 垣曲县| 南充市| 微山县| 东海县| 岗巴县| 文登市| 凤冈县| 营口市| 北海市| 崇左市| 宽城| 正镶白旗| 弋阳县| 海丰县| 田东县| 浦县| 绥宁县| 荥经县| 蓬溪县| 信丰县| 建瓯市| 克什克腾旗| 蓬莱市| 南投县| 名山县| 汉寿县| 屏东市| 商都县|