我有一组 SQL 语句
DROP TABLE IF EXISTS data.s;
CREATE TABLE data.s LIKE data._style;
INSERT INTO data.s Values (?,?,?,?,?,?,?,?,?,?,?,?,?);
UPDATE data.s n JOIN data.s_ o ON n.ID = o.ID SET n.TC = o.TC;
UPDATE data.s n JOIN data.s_ o ON n.ID = o.ID SET n.VR = o.VR;
UPDATE data.s n JOIN data.o_ o ON n.ID = o.ID SET n.OC = o.OC;
DELETE FROM data.s WHERE TC <= 0;
DELETE FROM data.s WHERE TC < 100;
DELETE FROM data.s WHERE OC < 100 ;
以“s”表为例,如何创建一个 SP,其中“s”是一个变量,可以替换为 t、u v、z……等等?我想用 SQL 调用语句更改此变量。
最佳答案
MySQL不处理真正的动态SQL,所以你必须使用准备好的语句。
查看已接受的答案:How To have Dynamic SQL in MySQL Stored Procedure尤其是他提供的链接(动态 SQL 部分)。
类似于:
CREATE PROCEDURE `execute`(IN sqlQuery varchar(255))
BEGIN
set @sqlQuery := sqlQuery;
prepare stmp from @sqlQuery;
execute stmp;
deallocate prepare stmp;
END
CREATE PROCEDURE `yourProcName`(IN tableName varchar(50))
BEGIN
call execute(concat('DROP TABLE IF EXISTS ', tableName));
call execute(concat('CREATE TABLE ', tableName, ' LIKE data._style'));
...
END
关于mysql - 如何创建接受参数的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172521/