[英]passing table name in stored procedure
我試圖弄清楚如何將表名的一部分傳遞到存儲過程中並使它起作用。
查詢是
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
好! 您要為每個用戶創建單獨的表嗎? 如果是,那真的很糟糕。
我不知道,但這可能是您的答案。 為什么不在參數參數“ log131”中傳遞完整的userId作為
BEGIN
SET @statment = concat('Select * from ',userId);
PREPARE stmt FROM @statment;
EXECUTE stmt USING userId;
DEALLOCATE PREPARE stmt;
END
這將消除concat的開銷
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.