2017-07-06 56 views
0

我有一個手動創建的轉換腳本,將產品ID更改爲另一個腳本。它可以處理上千種產品,我需要在10個不同的表上運行它。我可以在不復制腳本的情況下執行此操作嗎?在不同的表上運行相同的SQL腳本

我希望像這樣做,但它不支持:

convert_one.sql:

UPDATE @table SET product_id=12345 where product_id=123 
... a thousand similar lines 

convert_all.sql:

SET @table = 'table1'; 
SOURCE convert_one.sql; 

SET @table = 'table2'; 
SOURCE convert_one.sql; 
+0

你能從一些'php'腳本文件 –

+0

這是一個Java應用程序,並一次性轉換運行'SQL'代碼。不幸的是,編碼效率不高。 – Arthur

回答

0

你有使用prepared statements。否則你的變量就像一個字符串一樣對待,你不能選擇或更新一個字符串。

試試這樣說:

SET @table = 'table1'; 
PREPARE stmt FROM CONCAT('UPDATE ', @table, ' SET product_id=12345 where product_id=123;'); 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
相關問題