在存储过程中传递表名

时间:2013-11-17 19:55:41

标签: mysql

我试图找出如何将表名的一部分传递给存储过程并使其工作。

查询是

DELIMITER $$
DROP PROCEDURE IF EXISTS vorpaldev.searchLogId2$$
CREATE DEFINER = 'root'@'%'
PROCEDURE vorpaldev.searchLogId2 (userId varchar(300))
BEGIN
SET userId = CONCAT("log", userId);
SET @statment = "Select * from @userId ";
PREPARE stmt FROM @statment;
SET @a = userId;
EXECUTE stmt USING @a;
DEALLOCATE PREPARE stmt;
END
$$

DELIMITER 

我正在使用

CALL searchLogId2 (131) 

调用代码

我希望最终结果以

的形式执行
Select * from log131

1 个答案:

答案 0 :(得分:0)

嘛!你打算为每个用户创建一个单独的表吗?????????如果是,那真是太糟糕了。

我不知道,但可能这是你的答案。为什么不将参数参数'log131'中的完整userId传递为

BEGIN
   SET @statment = concat('Select * from ',userId);
   PREPARE stmt FROM @statment;
   EXECUTE stmt USING userId;
   DEALLOCATE PREPARE stmt;
END

这将消除concat的开销