DECLARE 變數名 資料類型 [DEFAULT 預設值];
BEGIN ... END 區塊內宣告@var),不可用 @ 前綴BEGIN ... END 區塊-- 方式 1: 無 DEFAULT,後續 SET
DECLARE a INT;
DECLARE b INT;
SET a = 5;
SET b = 5;
-- 方式 2: DEFAULT 子句
DECLARE a, b INT DEFAULT 5;
CREATE PROCEDURE p10()
BEGIN
DECLARE a, b INT DEFAULT 5;
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1 >= b;
END;
CALL p10();
-- 結果: 25, 25 (兩列 s1=5, a=5, 5*5=25)
CREATE PROCEDURE p11()
BEGIN
DECLARE x1 CHAR(5) DEFAULT 'outer';
BEGIN
DECLARE x1 CHAR(5) DEFAULT 'inner';
SELECT x1; -- 顯示 inner
END;
SELECT x1; -- 顯示 outer
END;
END) 時變數銷毀,外層變數恢復可見OUT 參數或指派給會話變數 (@var)IF 條件 THEN
陳述式...
[ELSEIF 條件 THEN
陳述式...]
[ELSE
陳述式...]
END IF;
CREATE PROCEDURE p12 (IN parameter1 INT)
BEGIN
DECLARE variable1 INT;
SET variable1 = parameter1 + 1;
IF variable1 = 0 THEN
INSERT INTO t VALUES (17);
END IF;
IF parameter1 = 0 THEN
UPDATE t SET s1 = s1 + 1;
ELSE
UPDATE t SET s1 = s1 + 2;
END IF;
END;
CALL p12(0):parameter1=0 → variable1=1 → 第一個 IF 不執行 → 第二個 IF 執行 s1+1CALL p12(-1):variable1=0 → 第一個 IF 執行 INSERT → 第二個 IF 執行 s1+1CALL p12(5):variable1=6 → 兩個 IF 皆不執行第一分支 → 執行 s1+2CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list]...
[ELSE statement_list]
END CASE;
-- 或搜尋條件形式
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list]...
[ELSE statement_list]
END CASE;
CASE 結構更清晰,適合多重互斥條件分支。