MySQL存儲(chǔ)過(guò)程是一種預(yù)先編寫(xiě)好的SQL語(yǔ)句集合,可以方便地進(jìn)行重復(fù)的操作。存儲(chǔ)過(guò)程可以使用全局變量來(lái)存儲(chǔ)臨時(shí)值,這些變量在存儲(chǔ)過(guò)程中可以任意使用和修改。
全局變量在MySQL中以“@”符號(hào)開(kāi)頭,可以在存儲(chǔ)過(guò)程里面定義和使用。定義全局變量可以使用SET語(yǔ)句,語(yǔ)法如下:
SET @variable_name = value;
其中,variable_name為全局變量的名稱,value為變量的初始值。
全局變量在存儲(chǔ)過(guò)程中的應(yīng)用可以概括為以下兩種方式:
使用全局變量作為參數(shù):
CREATE PROCEDURE my_proc(INOUT p_value INT) BEGIN SET @new_value = p_value * 2; SET p_value = @new_value; END;
在上述代碼中,p_value為存儲(chǔ)過(guò)程的輸入?yún)?shù),通過(guò)乘以2來(lái)更新變量的值,同時(shí)將新的值賦給全局變量@new_value。更新后的值再次賦回p_value。
使用全局變量存儲(chǔ)中間值:
CREATE PROCEDURE my_proc() BEGIN DECLARE tmp_value INT DEFAULT 0; SELECT SUM(price) INTO tmp_value FROM products; SET @result = tmp_value; END;
在這個(gè)例子中,tmp_value為存儲(chǔ)過(guò)程中定義的局部變量,用于存儲(chǔ)products表的價(jià)格總和。這個(gè)值再通過(guò)SET語(yǔ)句賦給全局變量@result,便于在存儲(chǔ)過(guò)程外部使用。