MySQL中的變量定義十分靈活,可以在查詢(xún)語(yǔ)句中直接定義,也可以在存儲(chǔ)過(guò)程或函數(shù)中使用DECLARE語(yǔ)句進(jìn)行定義。
-- 直接定義變量 SELECT @var1 := 1, @var2 := 2; -- 在存儲(chǔ)過(guò)程或函數(shù)中定義變量 DELIMITER $$ CREATE PROCEDURE `my_procedure`() BEGIN DECLARE var1 INT DEFAULT 1; DECLARE var2 VARCHAR(20) DEFAULT 'hello'; -- 其他操作 END$$ DELIMITER ;
在查詢(xún)語(yǔ)句中定義變量可以使用@符號(hào)來(lái)表示變量名,可以為變量賦初值。在存儲(chǔ)過(guò)程或函數(shù)中使用DECLARE語(yǔ)句進(jìn)行定義,可以設(shè)置變量的數(shù)據(jù)類(lèi)型和初始值,初始值可以是一個(gè)常量或一個(gè)表達(dá)式。
變量的作用域和生命周期也需要注意。在查詢(xún)語(yǔ)句中定義的變量只能在當(dāng)前查詢(xún)中使用,查詢(xún)結(jié)束后變量就會(huì)被銷(xiāo)毀。在存儲(chǔ)過(guò)程或函數(shù)中定義的變量則可以在整個(gè)存儲(chǔ)過(guò)程或函數(shù)中使用,直到存儲(chǔ)過(guò)程或函數(shù)結(jié)束才會(huì)被銷(xiāo)毀。
-- 示例 SET @num := 1; SELECT @num; -- 輸出1 DELIMITER $$ CREATE PROCEDURE `test_var`() BEGIN DECLARE num INT DEFAULT 2; SET @num := 3; SELECT @num, num; END$$ DELIMITER ; CALL test_var(); -- 輸出3, 2 SELECT @num; -- 輸出3