十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
一、局部變量

紫云網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
局部變量一般用在sql語句塊中,比如存儲(chǔ)過程的begin/end。其作用域僅限于該語句塊,在該語句塊執(zhí)行完畢后,局部變量就消失了。
局部變量一般用declare來聲明,可以使用default來說明默認(rèn)值。
二、用戶變量
用戶變量的作用域要比局部變量要廣。用戶變量可以作用于當(dāng)前整個(gè)連接,但是當(dāng)當(dāng)前連接斷開后,其所定義的用戶變量都會(huì)消失。
用戶變量使用如下(這里我們無須使用declare關(guān)鍵字進(jìn)行定義,可以直接這樣使用):
select @變量名
對(duì)用戶變量賦值有兩種方式,一種是直接用"="號(hào),另一種是用":="號(hào)。其區(qū)別在于使用set命令對(duì)用戶變量進(jìn)行賦值時(shí),兩種方式都可以使用;當(dāng)使用select語句對(duì)用戶變量進(jìn)行賦值時(shí),只能使用":="方式,因?yàn)樵趕elect語句中,"="號(hào)被看作是比較操作符。
變量總體分為兩大類:procedure內(nèi)部和非procedure內(nèi)部;
procedure內(nèi)用declare 聲明,作用域僅限于聲明的procedure。
另一類就是通常意義上的變量,分為全局(global)和局部(session),用select 或者 set聲明,作用域分別是全局和回話級(jí)別。
下面是一個(gè)簡單的 存儲(chǔ)過程的例子.
DECLARE v_index INT;
定義一個(gè) 名稱為 v_index 的變量, 類型為 INT
MYSQL 變量定義應(yīng)該只能在 存儲(chǔ)過程, 函數(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)
MySQL存儲(chǔ)過程中,定義變量有兩種方式:
? 1、使用set或select直接賦值,變量名以@開頭,可以在一個(gè)會(huì)話(即連接)的任何地方聲明,作用域是整個(gè)會(huì)話,稱為用戶變量。例如:set @var=1;
? 2、 以declare關(guān)鍵字聲明的變量,只能在存儲(chǔ)過程中使用,稱為存儲(chǔ)過程變量,主要用在存儲(chǔ)過程中,或者是給存儲(chǔ)傳參數(shù)中。例如: declare var1 int default 0;
兩者的區(qū)別是:
? ? 在調(diào)用存儲(chǔ)過程時(shí),以declare聲明的變量都會(huì)被初始化為null。而會(huì)話變量(即@開頭的變量)則不會(huì)被再初始化,在一個(gè)會(huì)話(連接)內(nèi),只須初始化一次,之后在會(huì)話內(nèi)都是對(duì)上一次計(jì)算的結(jié)果,就相當(dāng)于在是這個(gè)會(huì)話內(nèi)的全局變量。