2014-02-10 29 views
0

我新的MySQL和我有一个要求,那就是:MySQL的存储过程匿名

我传递5个参数的步骤,并以5个参数值,我建立一个动态查询。在那之后,我用mysql准备语句转换这个动态查询到准备好的语句,整理准备我执行这样

EX准备语句语句后:execute stmt using @param1,@param2,@param3,@param4,@param5

现在的问题是

如何传递这五个参数(@param1,@param2,@param3,@param4,@param5)动态?

回答

1

传递值作为参数的程序,然后分配给用户变量语句的执行:

CREATE PROCEDURE foo(p1 INT, p2 INT, p3 INT, p4 INT, p5 INT) BEGIN 
    PREPARE stmt FROM 'SELECT ?, ?, ?, ?, ?'; 
    SET @param1 := p1, @param2 := p2, @param3 := p3, @param4 := p4, @param5 := p5; 
    EXECUTE stmt USING @param1, @param2, @param3, @param4, @param5; 
    DEALLOCATE PREPARE stmt; 
END