2

我必须mysql stored procedure从一个表中获取值到另一个表。当我调用存储过程时,它运行良好,但问题是,inserting previous column如果current column值为null.

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

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
4

2 回答 2

3

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

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

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

于 2013-04-06T11:02:50.477 回答
1

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

DECLARE emp_name varchar(225) default null;
DECLARE emp_age varchar(225) default null;
DECLARE emp_dept varchar(225) default null;
于 2013-04-09T10:37:23.420 回答