使用變數的方式主要有二種,一是使用在變數名稱地一個字元加上 @
,二是使用 DECLARE
宣告再 SET
。
要注意的是 @
開頭的變數 scope 為整個 session,也就是在不同 function / store procedure 都可以讀取數值、設定數值。如以下範例:
DELIMITER ;; CREATE FUNCTION hello() RETURNS text BEGIN SET @str = 'hello'; RETURN @str; END ;; DELIMITER ; DELIMITER ;; CREATE FUNCTION world() RETURNS text BEGIN SET @str = 'world'; SET @str = CONCAT(hello(), ' ', @str); RETURN @str; END ;; DELIMITER ; SELECT world() as result;
因為會讀、寫到同一個變數,所以輸出會是 hello hello
。
若使用 DECLARE
宣告變數,則開變數的 scope 僅在 loop、function、store procedure 中才有效。相同的範例,改使用 DECLARE
:
DELIMITER ;; CREATE FUNCTION hello() RETURNS TEXT BEGIN DECLARE str TEXT; SET str = 'hello'; RETURN str; END ;; DELIMITER ; DELIMITER ;; CREATE FUNCTION world() RETURNS TEXT BEGIN DECLARE str text; SET str = 'world'; SET str = CONCAT(hello(), ' ', str); RETURN str; END ;; DELIMITER ; SELECT world() AS result;
輸出結果為 hello world
。