Mysql存储过程不会产生预期的结果

时间:2013-04-06 10:43:18

标签: mysql stored-procedures

我有一个mysql stored procedure来从一个表到另一个表获取值。当我调用存储过程它运行正常但问题是,如果inserting previous column值为current column,则值为null

示例:假设第二个员工姓名列为空,因为它在循环中运行,它会在第二个员工姓名的位置插入第一个员工姓名,但我希望new table中的列值为空值(如果列值)在我的existing table中为null.Below是我的存储过程。

CREATE  PROCEDURE `frstprocedure`()
BEGIN
DECLARE emp_name varchar(225);
DECLARE emp_age varchar(225);
DECLARE emp_dept varchar(225);

DECLARE masterCursor CURSOR for select empname,empage,empdept from Employee;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
SET done=0;
OPEN masterCursor;
my_loop: LOOP
FETCH masterCursor into emp_name,emp_age, emp_dept;
IF done THEN
CLOSE masterCursor;
LEAVE my_loop;
END IF;
insert into second_table values(emp_name,emp_age, emp_dept);
END LOOP my_loop;
END

2 个答案:

答案 0 :(得分:3)

尝试在存储过程中添加以下行after insert statement

SET emp_name=null;
SET emp_age=null;
SET emp_dept-null

这将在每次迭代中将所有字段值初始化为null,因此将存储正确的值。

答案 1 :(得分:1)

您还可以在声明变量时设置default values。请参阅下面的代码

DECLARE emp_name varchar(225) default null;
DECLARE emp_age varchar(225) default null;
DECLARE emp_dept varchar(225) default null;
相关问题