MySQL DECLARE 用法
在 MySQL 中,DECLARE 语句用于声明一个局部变量或一个条件变量。在存储过程或函数中,我们可以使用 DECLARE 来定义变量并赋予其初值。在本文中,我们将详细介绍 MySQL DECLARE 的用法以及示例代码。
DECLARE 语法
在 MySQL 中,DECLARE 语句的语法如下:
DECLARE variable_name datatype [DEFAULT value];
其中,variable_name
为变量名,datatype
为数据类型,value
为可选的初值。需要注意的是,在声明时,变量名不需要加 @
符号。
示例一:声明一个整型变量
下面是一个简单的示例,在存储过程中声明一个整型变量 num
并给其一个初值:
DELIMITER //
CREATE PROCEDURE demo_proc()
BEGIN
DECLARE num INT DEFAULT 10;
SELECT num;
END //
DELIMITER ;
在上面的示例中,我们声明了一个名为 num
的整型变量,并且将其初值设为 10。接着调用该存储过程,我们会得到输出为 10
。
示例二:声明一个字符串变量
除了整型变量外,我们还可以声明字符串类型的变量。下面是一个示例:
DELIMITER //
CREATE PROCEDURE demo_proc()
BEGIN
DECLARE name VARCHAR(50);
SET name = 'John';
SELECT name;
END //
DELIMITER ;
在上面的示例中,我们声明了一个名为 name
的字符串变量,并给其设定了一个值为 'John'
。最后执行该存储过程,我们会得到输出为 'John'
。
示例三:声明一个条件变量
在 MySQL 中,除了声明普通变量外,我们还可以声明一个条件变量,用于控制流程的执行。下面是一个示例:
DELIMITER //
CREATE PROCEDURE demo_proc()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE total_salary DECIMAL(10,2) DEFAULT 0.0;
DECLARE emp_salary DECIMAL(10,2);
DECLARE emp_cursor CURSOR FOR
SELECT salary FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN emp_cursor;
read_loop: LOOP
FETCH emp_cursor INTO emp_salary;
IF done THEN
LEAVE read_loop;
END IF;
SET total_salary = total_salary + emp_salary;
END LOOP;
SELECT total_salary;
CLOSE emp_cursor;
END //
DELIMITER ;
在上面的示例中,我们声明了一个条件变量 done
,并用于控制循环的退出。同时,我们还声明了一个游标 emp_cursor
,用于遍历 employees
表中的工资信息,并计算总工资 total_salary
。最后输出总工资结果。
总结
在本文中,我们详细介绍了 MySQL 的 DECLARE 语句的用法,并通过示例代码演示了如何声明普通变量和条件变量。通过使用 DECLARE,我们可以在存储过程中定义局部变量,方便在程序中进行数据处理和操作。