在本教學中,您將了解和學習儲存過程中的變數,包括如何宣告和使用變數。此外,您將了解變數的作用域(範圍)。
變數是一個命名資料物件,變數的值可以在儲存過程執行期間更改。我們通常使用儲存過程中的變數來儲存直接/間接結果。 這些變數是儲存過程的本地變數。
注意:變數必須先宣告後,才能使用它。
要在儲存過程中宣告一個變數,可以使用DECLARE
語句,如下所示:
DECLARE variable_name datatype(size) DEFAULT default_value;
下面來更詳細地解釋上面的語句:
DECLARE
關鍵字後面要指定變數名。變數名必須遵循MySQL表列名稱的命名規則。INT
,VARCHAR
,DATETIME
等。NULL
。但是可以使用DEFAULT
關鍵字為變數分配預設值。例如,可以宣告一個名為total_sale
的變數,資料型別為INT
,預設值為0
,如下所示:
DECLARE total_sale INT DEFAULT 0;
MySQL允許您使用單個DECLARE
語句宣告共用相同資料型別的兩個或多個變數,如下所示:
DECLARE x, y INT DEFAULT 0;
我們宣告了兩個整數變數x
和y
,並將其預設值設定為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
表中選擇的產品數量。一個變數有自己的範圍(作用域),它用來定義它的生命週期。 如果在儲存過程中宣告一個變數,那麼當達到儲存過程的END
語句時,它將超出範圍,因此在其它程式碼塊中無法存取。
如果您在BEGIN END
塊內宣告一個變數,那麼如果達到END
,它將超出範圍。 可以在不同的作用域中宣告具有相同名稱的兩個或多個變數,因為變數僅在自己的作用域中有效。 但是,在不同範圍內宣告具有相同名稱的變數不是很好的程式設計習慣。
以@
符號開頭的變數是對談變數。直到對談結束前它可用和可存取。
在本教學中,我們向您展示了如何在儲存過程中宣告變數,並討論了變數的範圍(作用域)。