MySQL 存儲過程的變量
變量是一個命名數據對象,變量的值能夠在存儲過程執行期間更改。咱們一般使用存儲過程中的變量來保存直接/間接結果。 這些變量是存儲過程的本地變量。html
注意:變量必須先聲明後,才能使用它。mysql
聲明變量
要在存儲過程當中聲明一個變量,可使用DECLARE
語句,以下所示:sql
DECLARE variable_name datatype(size) DEFAULT default_value;
下面來更詳細地解釋上面的語句:數據庫
- 首先,在
DECLARE
關鍵字後面要指定變量名。變量名必須遵循MySQL表列名稱的命名規則。 - 其次,指定變量的數據類型及其大小。變量能夠有任何MySQL數據類型,如
INT
,VARCHAR
,DATETIME
等。 - 第三,當聲明一個變量時,它的初始值爲
NULL
。可是可使用DEFAULT
關鍵字爲變量分配默認值。
例如,能夠聲明一個名爲total_sale
的變量,數據類型爲INT
,默認值爲0
,以下所示:編程
DECLARE total_sale INT DEFAULT 0;
MySQL容許您使用單個DECLARE
語句聲明共享相同數據類型的兩個或多個變量,以下所示:yii
DECLARE x, y INT DEFAULT 0;
咱們聲明瞭兩個整數變量x
和y
,並將其默認值設置爲0
。spa
分配變量值
當聲明瞭一個變量後,就能夠開始使用它了。要爲變量分配一個值,可使用SET
語句,例如:code
DECLARE total_count INT DEFAULT 0; SET total_count = 10;
上面語句中,分配total_count
變量的值爲10
。htm
除了SET
語句以外,還可使用SELECT INTO
語句將查詢的結果分配給一個變量。 請參閱如下示例:對象
DECLARE total_products INT DEFAULT 0 SELECT COUNT(*) INTO total_products FROM products
在上面的例子中:
- 首先,聲明一個名爲
total_products
的變量,並將其值初始化爲0
。 - 而後,使用
SELECT INTO
語句來分配值給total_products
變量,從示例數據庫(yiibaidb)中的products
表中選擇的產品數量。
實例
數據表 userinfo
BEGIN DECLARE user_name VARCHAR(50) DEFAULT ''; DECLARE user_age INT DEFAULT 0; DECLARE user_phone VARCHAR(11) DEFAULT ''; SELECT username,age,phone INTO user_name,user_age,user_phone FROM userinfo where ids = ids; SELECT user_name,user_age,user_phone; END
執行調用存儲過程,結果以下。
注意:數據庫表字段等命名是注意區別關鍵字,否則使用時會報錯,如key、name等。
以下
變量範圍(做用域)
一個變量有本身的範圍(做用域),它用來定義它的生命週期。 若是在存儲過程當中聲明一個變量,那麼當達到存儲過程的END
語句時,它將超出範圍,所以在其它代碼塊中沒法訪問。
若是您在BEGIN END
塊內聲明一個變量,那麼若是達到END
,它將超出範圍。 能夠在不一樣的做用域中聲明具備相同名稱的兩個或多個變量,由於變量僅在本身的做用域中有效。 可是,在不一樣範圍內聲明具備相同名稱的變量不是很好的編程習慣。
以@
符號開頭的變量是會話變量。直到會話結束前它可用和可訪問。