MySQL 存儲過程的變量

MySQL  存儲過程的變量

變量是一個命名數據對象,變量的值能夠在存儲過程執行期間更改。咱們一般使用存儲過程中的變量來保存直接/間接結果。 這些變量是存儲過程的本地變量。html

注意:變量必須先聲明後,才能使用它。mysql

聲明變量

要在存儲過程當中聲明一個變量,可使用DECLARE語句,以下所示:sql

DECLARE variable_name datatype(size) DEFAULT default_value;

下面來更詳細地解釋上面的語句:數據庫

  • 首先,在DECLARE關鍵字後面要指定變量名。變量名必須遵循MySQL表列名稱的命名規則。
  • 其次,指定變量的數據類型及其大小。變量能夠有任何MySQL數據類型,如INTVARCHARDATETIME等。
  • 第三,當聲明一個變量時,它的初始值爲NULL。可是可使用DEFAULT關鍵字爲變量分配默認值。

例如,能夠聲明一個名爲total_sale的變量,數據類型爲INT,默認值爲0,以下所示:編程

DECLARE total_sale INT DEFAULT 0;

MySQL容許您使用單個DECLARE語句聲明共享相同數據類型的兩個或多個變量,以下所示:yii

DECLARE x, y INT DEFAULT 0;

咱們聲明瞭兩個整數變量xy,並將其默認值設置爲0spa

分配變量值

當聲明瞭一個變量後,就能夠開始使用它了。要爲變量分配一個值,可使用SET語句,例如:code

DECLARE total_count INT DEFAULT 0; SET total_count = 10;

上面語句中,分配total_count變量的值爲10htm

除了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,它將超出範圍。 能夠在不一樣的做用域中聲明具備相同名稱的兩個或多個變量,由於變量僅在本身的做用域中有效。 可是,在不一樣範圍內聲明具備相同名稱的變量不是很好的編程習慣。

@符號開頭的變量是會話變量。直到會話結束前它可用和可訪問。

相關文章
相關標籤/搜索