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變數,從示例資料庫(zaixiandb)中的products表中選擇的產品數量。

變數範圍(作用域)

一個變數有自己的範圍(作用域),它用來定義它的生命週期。 如果在存儲過程中聲明一個變數,那麼當達到存儲過程的END語句時,它將超出範圍,因此在其他代碼塊中無法訪問。

如果您在BEGIN END塊內聲明一個變數,那麼如果達到END,它將超出範圍。 可以在不同的作用域中聲明具有相同名稱的兩個或多個變數,因為變數僅在自己的作用域中有效。 但是,在不同範圍內聲明具有相同名稱的變數不是很好的編程習慣。

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

在本教學中,我們向您展示了如何在存儲過程中聲明變數,並討論了變數的範圍(作用域)。


上一篇: MySQL存儲過程 下一篇: MySQL視圖