在不同的表上运行相同的SQL脚本

问题描述:

我有一个手动创建的转换脚本,将产品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

你有使用prepared statements。否则你的变量就像一个字符串一样对待,你不能选择或更新一个字符串。

试试这样说:

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