簡體   English   中英

在存儲過程中傳遞表名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM