2011-10-21 130 views
0

希望一切都與你太好了,我現在面臨一個問題,存儲過程,去追逐,下面的代碼:錯誤1146存儲過程

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

是否有可能你作爲另一個用戶連接,並且該用戶無法訪問該表?你需要做一些補助嗎?或者您是否以「招聘」身份登錄,但該表是否存在於另一個架構中? – Marvo

回答

0

你已編碼的文字作爲表名 - 你想讓MySQL 評估變量,然後執行作爲動態SQL。下面是你如何做到這一點:

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

沒聽說動態SQL之前,謝謝你讓我知道,但問題依然存在,沒有得到插入job_seeker表,target_table,但我已經有了一個新的異常,而不是最後一個,錯誤代碼:1241 操作數應包含1列(S) – Rehme