簡體   English   中英

MySQL存儲過程動態更改表名

[英]MySQL Stored Procedure dynamic change name of table

我想在sql查詢中更改表的動態名稱。 例如,我有下一個存儲過程:

CREATE PROCEDURE NewProc(IN tableName varchar(64),IN message text)
BEGIN
    INSERT INTO tableName VALUES (message);
END;

我需要在運行時更改tableName ,我可以這樣做嗎? 謝謝。

您必須使用動態SQL來准備執行 SQL字符串,以實現您描述的內容。

在准備之前,必須將動態表名(或列名或SQL關鍵字等)插入到SQL字符串中。 您不能對這些動態元素使用查詢參數。

將表名插入SQL查詢時,請小心避免SQL注入漏洞。 例如,您應該通過在信息模式中查找表名來檢查表名是否存在。

我同意@OMG Ponies的評論 - 這是一個代碼味道 ,你有多個具有相同結構的表,所以你想要完全相同的插入到完全相同的列。 代碼氣味並不能保證你的設計不好,但值得考慮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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