亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL Server在T-SQL語(yǔ)句中使用變量

 更新時(shí)間:2022年05月21日 11:30:24   作者:springsnow  
這篇文章介紹了SQL Server在T-SQL語(yǔ)句中使用變量的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

變量的種類(lèi)

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

  • 全局變量是由系統(tǒng)定義的,在整個(gè)SQL Server實(shí)例內(nèi)都能訪問(wèn)到的變量,全部變量以@@開(kāi)頭,用戶(hù)只能訪問(wèn),不能賦值。
  • 局部變量由用戶(hù)定義,生命周期只在一個(gè)批處理內(nèi)有效。局部變量以@作為第一個(gè)字符,由用戶(hù)自己定義和復(fù)制。

示例:

DECLARE @i int    --聲明一個(gè)int類(lèi)型局部變量
  SET @i = 10      --通過(guò)SET對(duì)局部變量進(jìn)行賦值

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

  PRINT @@VERSION     --全部變量,只能讀取,不能賦值
  SET @@VERSION = '123'    --此行代碼報(bào)錯(cuò)

全局變量

全局變量的用途

  • 全局變量是SQL Server系統(tǒng)內(nèi)部使用的變量,其作用范圍并不僅僅局限于某一程序,而是任何程序均可以隨時(shí)調(diào)用。
  • 全局變量通常存儲(chǔ)一些SQL Server的配置設(shè)定值和統(tǒng)計(jì)數(shù)據(jù)。用戶(hù)可以在程序中用全局變量來(lái)測(cè)試系統(tǒng)的設(shè)定值或者是Transact-SQL命令執(zhí)行后的狀態(tài)值。

全局變量列表

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

局部變量

局部變量的用途

  • 在循環(huán)中記錄循環(huán)次數(shù)
  • 儲(chǔ)存存儲(chǔ)過(guò)程或者函數(shù)的返回值

局部變量的聲明

局部變量的聲明必須以"DECLARE"作為關(guān)鍵字,變量的命名必須以"@"作為變量名的第一個(gè)字符,必須為所聲明的變量提供一個(gè)數(shù)據(jù)類(lèi)型和數(shù)據(jù)長(zhǎng)度。
如:

DECLARE @Name nvarchar(20)

注意:局部變量的數(shù)據(jù)類(lèi)型不能為T(mén)ext,ntext,和Image類(lèi)型,當(dāng)對(duì)于字符型變量只提供數(shù)據(jù)類(lèi)型沒(méi)有提供數(shù)據(jù)長(zhǎng)度時(shí),數(shù)據(jù)長(zhǎng)度默認(rèn)為1.

設(shè)置變量中的值(賦值)

有兩種設(shè)置變量值方法??梢允褂肧ELECE語(yǔ)句或者SET語(yǔ)句。從功能上看,它們的作用幾乎是相同的,不同的是SELECT語(yǔ)句允許元數(shù)據(jù)值來(lái)自SELECT語(yǔ)句中的某一列。

1、使用SET設(shè)置變量

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

用查詢(xún)到的值設(shè)置變量:

DECLARE @i int
  SET @i = (select MAX(Age) from Person)  --當(dāng)使用SET時(shí)如果返回結(jié)果有多行也會(huì)報(bào)錯(cuò)。同時(shí)如果返回多條記錄也報(bào)錯(cuò)
  SELECT @i

2、使用SELECT設(shè)置變量:

當(dāng)變量中存儲(chǔ)的信息來(lái)源于查詢(xún)時(shí),經(jīng)常使用SELECT給變量賦值,語(yǔ)法比較簡(jiǎn)便。

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

查詢(xún)的信息為變量賦值:

DECLARE @i int
   SELECT @i = Age from Person_1 order by Id desc    --當(dāng)返回多個(gè)值時(shí)用最后一個(gè)賦值
   PRINT @i

SELECT同時(shí)設(shè)置多個(gè)值:

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

3、當(dāng)表達(dá)式未返回值時(shí)

  • 使用SET對(duì)局部變量賦值時(shí),如果賦值表達(dá)式未返回值,則局部變量變?yōu)镹ULL;而SELECT對(duì)表達(dá)式賦值時(shí),如果表達(dá)式未返回值,則局部變量保持原值。
  • 一切只聲明沒(méi)有賦值的局部變量的初始值都為”NULL”。

例如:

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

可見(jiàn),當(dāng)SELECT表達(dá)式賦值時(shí),如果為返回值,則保持原值。

局部表變量

局部表變量是一個(gè)特殊的局部變量。和臨時(shí)表不同,局部表變量具有一切局部變量的特點(diǎn)。在查詢(xún)中,因?yàn)榫植勘碜兞渴谴嬖趦?nèi)存中,而不是硬盤(pán)中,所以速度會(huì)遠(yuǎn)遠(yuǎn)快于臨時(shí)表或是實(shí)際表。局部表變量最多的使用是在查詢(xún)中充當(dāng)多個(gè)表做連接時(shí)的中間表

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

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

到此這篇關(guān)于SQL Server在T-SQL語(yǔ)句中使用變量的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SQL Server 中 JSON_MODIFY 的使用

    詳解SQL Server 中 JSON_MODIFY 的使用

    SQL Server 從 2016 開(kāi)始支持了一些 JSON操作,最近的項(xiàng)目里也是好多地方字段直接存成了 JSON,需要了解一下怎么在SQL Server 中操作 JSON.這篇文章主要介紹了SQL Server 中 JSON_MODIFY 的使用,需要的朋友可以參考下
    2019-11-11
  • Sql Server中的DBCC命令詳細(xì)介紹

    Sql Server中的DBCC命令詳細(xì)介紹

    這篇文章主要介紹了Sql Server中的DBCC命令詳細(xì)介紹,本文講解了什么是DBCC、DBCC到底有多少個(gè)命令、如何記住DBCC命令、常用命令的實(shí)踐等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯(cuò)誤的解決方法

    sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯(cuò)誤的解決方法

    sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯(cuò)誤的解決方法,需要的朋友可以參考下
    2012-01-01
  • sqlserver數(shù)據(jù)庫(kù)高版本備份還原為低版本的方法

    sqlserver數(shù)據(jù)庫(kù)高版本備份還原為低版本的方法

    這篇文章主要為大家詳細(xì)介紹了sqlserver數(shù)據(jù)庫(kù)高版本備份還原為低版本的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • SQLSERVER 時(shí)間格式大全

    SQLSERVER 時(shí)間格式大全

    最近在寫(xiě)程序的過(guò)程中有遇到SQL SERVER時(shí)間格式的問(wèn)題,一時(shí)想不起來(lái),上網(wǎng)搜索了一下,這方面的資料還真不少,找了一個(gè)比較全面的。
    2010-05-05
  • group by 按某一時(shí)間段分組統(tǒng)計(jì)并查詢(xún)(推薦)

    group by 按某一時(shí)間段分組統(tǒng)計(jì)并查詢(xún)(推薦)

    這篇文章主要介紹了group by 按某一時(shí)間段分組統(tǒng)計(jì)并查詢(xún),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 一文詳解如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫(kù)

    一文詳解如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫(kù)

    sql server是一款數(shù)據(jù)庫(kù)管理工具,其中有非常多實(shí)用的功能可以幫助用戶(hù)完成數(shù)據(jù)庫(kù)的管理操作,也有一些用戶(hù)在操作這款軟件的時(shí)候會(huì)需要用到遠(yuǎn)程連接功能,這篇文章主要給大家介紹了關(guān)于如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • MS SQL Server獲取十二個(gè)月份的英文縮寫(xiě)

    MS SQL Server獲取十二個(gè)月份的英文縮寫(xiě)

    十二個(gè)月份的英文縮寫(xiě),只有五月份是全稱(chēng)與縮寫(xiě)一樣,其它月份的縮寫(xiě)僅是取前三位字母。因此Insus.NET寫(xiě)成一個(gè)自定義函數(shù)獲取月份名稱(chēng)縮寫(xiě),感興趣的朋友可以了解下
    2013-01-01
  • SQLServer導(dǎo)出sql文件/表架構(gòu)和數(shù)據(jù)操作步驟

    SQLServer導(dǎo)出sql文件/表架構(gòu)和數(shù)據(jù)操作步驟

    只導(dǎo)出了數(shù)據(jù)庫(kù)的sql腳本,而表里的數(shù)據(jù)依然沒(méi)有導(dǎo)出來(lái),接下來(lái)將為你解決這個(gè)問(wèn)題,感興趣的看下教程哈
    2013-03-03
  • SQL2000 全文索引完全圖解

    SQL2000 全文索引完全圖解

    全文索引是解決海量數(shù)據(jù)模糊查詢(xún)的較好解決辦法。
    2010-03-03

最新評(píng)論