国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL SERVER中變量的定義、賦值與使用

2024-08-31 00:54:29
字體:
來源:轉載
供稿:網友
SQL SERVER中變量的定義、賦值與使用

?

本文面向對SQL SERVER中變量操作不熟悉的用戶,希望能使他們在看完本文后能對變量操作有具體和全面的認識。

?

在學習SQL SERVER的過程中,很多時候需要對某些單獨的值進行調試,這時就需要在SQL SERVER中對變量進行操作。

變量能進行的操作分定義、賦值、使用三種,下面以一段簡短的代碼作為示例:

--定義一個名稱為@I的變量,指定其類型為整數

DECLARE@IINT

--對變量@I賦值為

SET@I=3

--輸出@I的值

SELECT@I

這就是一個最簡單的變量操作,包含上述全部三種類型。但變量能進行的操作遠不止于此,下面分別進行描述:

變量聲明:

變量聲明的第一部分為關鍵字DECLARE,寫在最前面。

變量聲明的第二部分為變量名稱,必須以@開頭,后面可以跟字母、數字、中文和非系統運算符的字符,如@、$、_等。

變量聲明的第三部分為變量類型,可以定義SQL SERVER中的所有常規類型,包括各種數字類型、字符串類型、時間類型等,只有極少數特殊數據類型無法在變量中定義。

?

·變量的三個部分用分隔符分開,分隔符可以由多個空格、TAB制表符、換行符組成。

·變量名稱的大小寫不區分,@A和@a指向同一個變量,不能重復定義。關鍵字和數據類型也是大小定不區分,含義相同。

·多個變量同時定義用逗號分隔多個變量名稱和類型。如DECLARE @A INT,@B VARCHAR(50)。

·定義的變量的生命周期為同一批次或存儲過程,即:在你運行的同一批語句(也就是運行時選擇的所有語句)或存儲過程中,定義的變量都可以使用,變量名稱必須唯一。

下面給出常用的變量定義寫法,以下變量的聲明方式都是合法的:

DECLARE@AINT,@BINT

--最常見的寫法

SET@A=1

--如果寫SET @A='XX'會報錯,因為XX是字符串且無法隱式轉換為數字

SET@A='23'

--用標量值函數賦值

SET@A=DBO.FUN_1(@A)

--用子查詢賦值

SET@A=(SELECTMAX(number)FROMMASTER..spt_values)

--用其它函數賦值

SET@A=@B

--用表達式賦值

SET@A=@B*5+DBO.FUN_1(@A)-(SELECTMAX(number)FROMMASTER..spt_values)

變量賦值

變量的賦值有多種方式,最常見的方式是以下四種:

  1. SET賦值

    對單個變量賦值可以使用SET,基本寫法如下:

    SET@A='XYZ'

    需要注意的地方有:

    ·SET后的變量名稱必須在本批次中已定義,大小寫不限。

    ·=號后面可以寫數字、字符、標量值函數、返回一行一列的子查詢、其它變量、表達式等,但不能寫存儲過程。

    ·=號后返回的數據類型必須與變量的數據相同,或能隱式轉換成變量的數據類型

    ·SET后的變量名稱必須在本批次中已定義,大小寫不限。

    ?

    下面給出常見的SET賦值寫法:

    DECLARE@AINT,@BINT

    --最常見的寫法

    SET@A=1

    --如果寫SET @A='XX'會報錯,因為XX是字符串且無法隱式轉換為數字

    SET@A='23'

    --用標量值函數賦值

    SET@A=DBO.FUN_1(@A)

    --用子查詢賦值

    SET@A=(SELECTMAX(number)FROMMASTER..spt_values)

    --用其它函數賦值

    SET@A=@B

    --用表達式賦值

    SET@A=@B*5+DBO.FUN_1(@A)-(SELECTMAX(number)FROMMASTER..spt_values)

    ?

  2. SELECT賦值

    SELECT可以被認為是基于SET的強化賦值方式,以下寫法與上面SET的基本寫法完全等效:

    SELECT@A='XYZ'

    SELECT還可以對多個變量同時賦值:

    SELECT@A='XYZ',@B='CC'

????SELECT還可以用查詢的結果集對變量賦值:

????????SELECT@A=NAME,@B=NAME+'X'

FROMTB_CLASS

WHERENAMELIKE'%%'

  1. 輸出參數賦值

    在定義存儲過程時可以將傳入的參數設定為輸出參數,然后在其中為其賦值。下面是一個簡短的例子:

    CREATEPROCEDUREPROC_TEST(

    @IINTOUTPUT

    )

    AS

    SET@I=@I+1

    GO

    DECLARE@JINT

    SET@J=5

    ?

    EXECPROC_TEST@J OUTPUT

    EXECPROC_TEST@J OUTPUT

    ?

    SELECT@J

    --7

????需要注意的是在存儲過程的定義中和執行存儲過程的語句中,OUTPUT關鍵字都是必須的,不然無法返回參數。

  1. UPDATE賦值

    UPDATE里除了可以給列賦新值,還能給變量賦值,這里就涉及到一些底層的知識和高級的用法,這里不多說,只看示例即可:

????????DECLARE@IINT

?

????????UPDATETBSETCOL1='A',@I=1

?

????UPDATETBSETCOL1='B',@I=LEN(col1)WHERE COL1 LIKE'%%'

?

變量使用

變量可用的地方很多,在調試函數、存儲過程、查詢時都會用到,只要能用表達式的地方基本上都能用變量。以下是幾個典型用法:

????????DECLARE@IINT

????????SET@I=1

????????--直接輸出變量

????????SELECT@I

????????--使用變量調試函數

????????SELECTDBO.FUN_TEST2(@I)

????????--使用變量作為存儲過程的輸入參數

????????EXECPROC_TEST@I

????????--查詢中使用變量

????????SELECT*

????????FROMTB

????????WHERECOL1>@I

????????--更新中使用變量

????????UPDATETBSETCOL1=@I

????????WHERECOL1<>@I

?

以上就是變量使用的全部說明,希望能為讀者帶來幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰台区| 松桃| 永顺县| 安达市| 德惠市| 广宁县| 威远县| 遵义县| 密云县| 兴业县| 黎城县| 隆子县| 台前县| 出国| 望城县| 武宁县| 广河县| 新丰县| 特克斯县| 淮阳县| 建宁县| 屯留县| 介休市| 通州区| 沂源县| 兴宁市| 张家港市| 菏泽市| 休宁县| 中阳县| 南部县| 武义县| 房山区| 麻江县| 新平| 砀山县| 含山县| 宝清县| 潢川县| 荔浦县| 隆安县|