• 本地变量可以通过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)