我有一个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
答案 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;