希望你的一切都很好,我面临存储过程的问题,赶上追逐,这是代码:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `register`(in un varchar(45),in pw varchar(45),
in user_email varchar(45),
in permissionid int,in targeted_table varchar(15))
begin
declare id int;
declare target_table varchar(15);
set target_table = targeted_table;
insert into user_authentication(user_name,user_password,email,permission_id)
values(un,pw,user_email,permissionid);
select user_id into id
from user_authentication
where user_name = un;
insert into target_table(user_id)values(id) ;
end
每当我通过此声明致电SP时:
call register('abeer','somePassword','someEmail',1,'job_seeker')
工作台对我说出这个例外:
Error Code: 1146
Table 'recruitment.target_table' doesn't exist
实际上它提交了SP中的第一个插入语句,但是当它到达select语句时,我得到了上面的异常,虽然我确定表,job_seeker在那里,你不能告诉我我的SP出了什么问题,因为这是第一次在SP中使用多个语句,也是变量,谢谢。
答案 0 :(得分:0)
您已为表名编码了一个文字 - 您希望mysql 评估变量,然后将其作为动态sql执行。这是你如何做到的:
PREPARE mycmd from CONCAT('insert into ', target_table, '(user_id) values(', id, ')');
EXECUTE mycmd;