2012-12-23 29 views
-1

我有在MySQL這樣一個存儲過程:如何使用prepared語句插入1個id和幾個項目?

SET @q1= CONCAT('INSERT INTO tblPermissionRole (IdRole , IdPermission) VALUES (p_IdRole', p_Permission, ')'); 
PREPARE stmt FROM @q1; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

我要插入一些idPermission只有一個idRole,但事先準備好的聲明,我不知道它是如何可能的。請幫幫我。 TNX。

回答

1

您需要添加參數佔位符兩個值

SET @q1= 'INSERT INTO tblPermissionRole (IdRole , IdPermission) VALUES (?, ?)'; 
PREPARE stmt FROM @q1; 

set @id := 1; 
<some kind of iteration that sets @perm> 
    EXECUTE stmt USING @id, @perm; 
</some kind ... > 

DEALLOCATE PREPARE stmt; 
+0

你的意思是我必須將iDPermissions分開嗎?它的超負荷不是很多? – Highlan

+0

如果你的存儲過程需要一串用逗號分隔的值,你需要將它們分開,併爲每個值做一次調用。有一些方法可以做到這一點,但沒有一個是微不足道的。此電子郵件中有一個http://forums.mysql.com/read.php?60,78793,79230 –

0

您可以使用insert into .. select聲明。 This article可能會幫助你。這個想法是,你將創建一個函數來分割逗號分隔的參數值並返回一個表。您將在插入語句中的表中。

+0

鏈接到「下面的文章」嗎? – inspectorG4dget

相關問題