存储过程的错误1146

时间:2011-10-21 23:42:10

标签: mysql

希望你的一切都很好,我面临存储过程的问题,赶上追逐,这是代码:

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中使用多个语句,也是变量,谢谢。

1 个答案:

答案 0 :(得分:0)

您已为表名编码了一个文字 - 您希望mysql 评估变量,然后将其作为动态sql执行。这是你如何做到的:

PREPARE mycmd from CONCAT('insert into ', target_table, '(user_id) values(', id, ')');
EXECUTE mycmd;