MySQL 存儲過程的變量


MySQL  存儲過程的變量

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

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

聲明變量

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

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語句聲明共享相同數據類型的兩個或多個變量,如下所示:

DECLARE x, y INT DEFAULT 0;

我們聲明了兩個整數變量xy,並將其默認值設置為0

分配變量值

當聲明了一個變量后,就可以開始使用它了。要為變量分配一個值,可以使用SET語句,例如:

DECLARE total_count INT DEFAULT 0;
SET total_count = 10;

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

除了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,它將超出范圍。 可以在不同的作用域中聲明具有相同名稱的兩個或多個變量,因為變量僅在自己的作用域中有效。 但是,在不同范圍內聲明具有相同名稱的變量不是很好的編程習慣。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM