MySQL存儲(chǔ)過(guò)程中,定義變量有兩種方式:
龍城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
? 1、使用set或select直接賦值,變量名以@開(kāi)頭,可以在一個(gè)會(huì)話(即連接)的任何地方聲明,作用域是整個(gè)會(huì)話,稱為用戶變量。例如:set @var=1;
? 2、 以declare關(guān)鍵字聲明的變量,只能在存儲(chǔ)過(guò)程中使用,稱為存儲(chǔ)過(guò)程變量,主要用在存儲(chǔ)過(guò)程中,或者是給存儲(chǔ)傳參數(shù)中。例如: declare var1 int default 0;
兩者的區(qū)別是:
? ? 在調(diào)用存儲(chǔ)過(guò)程時(shí),以declare聲明的變量都會(huì)被初始化為null。而會(huì)話變量(即@開(kāi)頭的變量)則不會(huì)被再初始化,在一個(gè)會(huì)話(連接)內(nèi),只須初始化一次,之后在會(huì)話內(nèi)都是對(duì)上一次計(jì)算的結(jié)果,就相當(dāng)于在是這個(gè)會(huì)話內(nèi)的全局變量。
下面是一個(gè)簡(jiǎn)單的 存儲(chǔ)過(guò)程的例子.
DECLARE v_index INT;
定義一個(gè) 名稱為 v_index 的變量, 類型為 INT
MYSQL 變量定義應(yīng)該只能在 存儲(chǔ)過(guò)程, 函數(shù)里面定義.
不像 Oracle / SQL Server , 一個(gè) BEGIN / END 里面就可以定義/執(zhí)行了。
mysql DELIMITER //
mysql CREATE PROCEDURE TestWhile()
- BEGIN
- DECLARE v_index INT;
-
- SET v_index = 0;
-
- WHILE v_index 5 DO
- SET v_index = v_index + 1;
- SELECT v_index;
- END WHILE;
-
- END//
Query OK, 0 rows affected (0.00 sec)
DECLARE var_name[,...] type [DEFAULT value]
這個(gè)語(yǔ)句被用來(lái)聲明局部變量。
要給變量提供一個(gè)默認(rèn)值,請(qǐng)包含一個(gè)DEFAULT子句。
值可以被指定為一個(gè)表達(dá)式,不需要為一個(gè)常數(shù)。
如果沒(méi)有DEFAULT子句,初始值為NULL。
局部變量的作用范圍在它被聲明的BEGIN ... END塊內(nèi)。
它可以被用在嵌套的塊中,除了那些用相同名字聲明變量的塊。