• 本地變量可以通過declare語句進行聲明
• 聲明后的變量可以通過select … into var_list進行賦值,或者通過set語句賦值,或者通過定義游標並使用fetch … into var_list賦值
• 通過declare聲明變量方法:
• 使用default指定變量的默認值,如果沒有指定默認值則初始值為NULL
• Type指明該變量的數據類型
• 聲明的變量作用范圍為被聲明的begin … end語句塊之間
• 聲明的變量和被引用的數據表中的字段名要區分開來
delimiter // CREATE PROCEDURE sp1 (v_sid int) BEGIN DECLARE xname VARCHAR(64) DEFAULT 'bob'; DECLARE xgender INT; SELECT sname, gender INTO xname, xgender FROM students WHERE sid= v_sid; SELECT xname,xgender; END; // delimiter ;
mysql> delimiter // mysql> CREATE PROCEDURE sp1 (v_sid int) -> BEGIN -> DECLARE xname VARCHAR(64) DEFAULT 'bob'; -> DECLARE xgender INT; -> SELECT sname, gender INTO xname, xgender -> FROM students WHERE sid= v_sid; -> SELECT xname,xgender; -> END; -> // Query OK, 0 rows affected (0.04 sec) mysql> delimiter ; mysql> mysql> call sp1(1); +--------+---------+ | xname | xgender | +--------+---------+ | Andrew | 0 | +--------+---------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec) mysql> call sp1(2); +-------+---------+ | xname | xgender | +-------+---------+ | Andy | 0 | +-------+---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> call sp1(3); +-------+---------+ | xname | xgender | +-------+---------+ | Bob | 0 | +-------+---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)