MySQL定義變量的生命周期是指變量存在的時間段。在MySQL中,使用SET命令定義變量,其生命周期可以分為以下兩種:
SET @var_name = value;
一、session級別生命周期
SET @var_name = value;
當變量定義在session級別時,其生命周期是在當前MySQL會話中。也就是說,在當前會話中的其他查詢語句中,可以使用此變量。但是,當此會話結束時,這些變量就會被銷毀。如下所示:
-- 在當前MySQL會話中定義一個變量 SET @age = 18; -- 輸出此變量 SELECT @age; -- 結束當前MySQL會話 -- 在新的MySQL會話中嘗試輸出前面定義的變量 SELECT @age;
輸出結果:
18 NULL
在第一個會話中定義的變量可以使用,但是在新會話中無法使用。
二、局部生命周期
BEGIN DECLARE var_name data_type DEFAULT value; -- 語句塊中使用變量 END;
當變量定義在存儲過程或函數(shù)中時,其生命周期是在存儲過程或函數(shù)執(zhí)行期間。它的范圍被限制在聲明它的語句塊內(nèi)部。也就是說,在語句塊外部的任何查詢語句中是無法使用此變量的。當存儲過程或函數(shù)執(zhí)行完畢時,這些變量也將被銷毀。如下所示:
-- 定義一個存儲過程 DROP PROCEDURE IF EXISTS my_procedure; CREATE PROCEDURE my_procedure() BEGIN DECLARE age INT DEFAULT 18; -- 在此語句塊中使用變量 SELECT age; END; -- 調(diào)用存儲過程并輸出結果 CALL my_procedure();
輸出結果:
18
在存儲過程中定義的變量只在存儲過程中可用,無法在調(diào)用存儲過程之外的查詢語句中使用。