使用變數的方式主要有二種,一是使用在變數名稱地一個字元加上 @ ,二是使用 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。