我试图找出如何将表名的一部分传递给存储过程并使其工作。
查询是
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
答案 0 :(得分:0)
嘛!你打算为每个用户创建一个单独的表吗?????????如果是,那真是太糟糕了。
我不知道,但可能这是你的答案。为什么不将参数参数'log131'中的完整userId传递为
BEGIN
SET @statment = concat('Select * from ',userId);
PREPARE stmt FROM @statment;
EXECUTE stmt USING userId;
DEALLOCATE PREPARE stmt;
END
这将消除concat的开销