3
我想在sql查詢中更改表的動態名稱。比如我有一個存儲的過程:MySQL存儲過程動態更改表的名稱
CREATE PROCEDURE NewProc(IN tableName varchar(64),IN message text)
BEGIN
INSERT INTO tableName VALUES (message);
END;
我需要改變表名在運行時,我能做到這一點或沒有? 謝謝。
我想在sql查詢中更改表的動態名稱。比如我有一個存儲的過程:MySQL存儲過程動態更改表的名稱
CREATE PROCEDURE NewProc(IN tableName varchar(64),IN message text)
BEGIN
INSERT INTO tableName VALUES (message);
END;
我需要改變表名在運行時,我能做到這一點或沒有? 謝謝。
您必須使用動態SQL才能將prepare和execute作爲SQL字符串來實現您所描述的內容。
在準備之前,動態表名(或列名或SQL關鍵字等)必須插入到SQL字符串中。您無法爲這些動態元素使用查詢參數。
將表名插入到SQL查詢中時,要小心避免SQL注入漏洞。例如,您應該通過查找information schema來檢查表名是否存在。
我同意來自@OMG Ponies的評論 - 這是一個code smell,您有多個相同結構的表格,這樣您就可以對完全相同的列執行完全相同的插入。代碼氣味並不能保證你的設計不好,但值得考慮。
這是一個非常值得懷疑的數據模型,使多個表具有相同數據類型的消息列... – 2010-09-07 21:22:05