mysql儲存過程之變數(建立(DECLARE)和賦值(SET))
我們都知道,變數是一個命名資料物件,變數的值可以在儲存過程執行期間更改。我們接下來就嘗試使用儲存過程中的變數來儲存直接/間接結果。 這些變數是儲存過程的本地變數,但是我們得注意,變數必須先聲明後,才能使用它。而我們如果要在儲存過程中宣告一個變數,可以使用DECLARE
語句,來看下sql語法:
DECLARE variable_name datatype(size) DEFAULT default_value;
咱們來看下上面的sql具體是什麼意思:
- 首先,在
DECLARE
關鍵字後面要指定變數名。變數名必須遵循MySQL表列名稱的命名規則。 - 其次,指定變數的資料型別及其大小。變數可以有任何mysql資料型別,如
INT
VARCHAR
,DATETIME
等。 - 最後,當宣告一個變數時,它的初始值為
NULL
。但是可以使用DEFAULT
關鍵字為變數分配預設值。
咱們接下來就來宣告一個名為total_sale
的變數,資料型別為INT
,預設值為0
。來看下sql:
DECLARE total_sale INT DEFAULT 0;
其中,mysql允許使用單個DECLARE
語句宣告共享相同資料型別的兩個或多個變數,來看個sql:
DECLARE x, y INT DEFAULT 0;
在上面的sql中,我們聲明瞭兩個整數變數x
和y
,並將其預設值設定為0
。完事呢,既然變數設定完了,接下來就該分配值了,我們如果要為變數分配一個值,可以使用SET
DECLARE total_count INT DEFAULT 0;
SET total_count = 10;
在上面的sql語句中,我們分配total_count
變數的值為10
。完事除了SET
語句之外,還可以使用SELECT INTO
語句將查詢的結果分配給一個變數,來看例項:
DECLARE total_products INT DEFAULT 0
SELECT COUNT(*) INTO total_products
FROM products
在上面的sql中,我們應當有如下理解:
- 首先,宣告一個名為
total_products
的變數,並將其值初始化為0
。 - 然後,使用
SELECT INTO
total_products
變數,從資料庫中的products
表中選擇的產品數量。
我們知道一個變數有自己的範圍(作用域),它用來定義它的生命週期。 但是如果在儲存過程中宣告一個變數,那麼當達到儲存過程的END
語句時,它將超出範圍,因此在其它程式碼塊中無法訪問。
我們可以這麼理解,如果我們在BEGIN END
塊內宣告一個變數,那麼如果達到END
,它將超出範圍。 我們還可以在不同的作用域中宣告具有相同名稱的兩個或多個變數,因為變數僅在自己的作用域中有效。 但是,在不同範圍內宣告具有相同名稱的變數不是很好的程式設計習慣。其中,以@
符號開頭的變數是會話變數,直到會話結束前它可用和可訪問。
好啦,本次分享就到這裡了。如果感覺不錯的話,請多多點贊支援哦。。。