mysql准备语句在执行stmt使用时没有重复变量

时间:2018-04-19 18:39:54

标签: mysql prepared-statement

假设有些像这样

SET @var1 = 'val1';
SET @var2 = 'val2';

SET @query = "
    INSERT INTO my_table
    VALUES
    (?,?),
    (?,?),
    -- ... imagine here a lot of values
    (?,?)
";

PREPARE stmt FROM @query;
EXECUTE stmt USING @var1,@var2,@var1,@var2,@var1,@var2;
DEALLOCATE PREPARE stmt;

有没有办法只在EXECUTE stmt USING上写一次变量?

有些人喜欢这样:

EXECUTE stmt USING @var1,@var2;

在这种情况下获取错误

  

执行语句

的参数不正确

1 个答案:

答案 0 :(得分:3)

MySQL支持位置查询参数,而不是命名查询参数。

SQL查询中的参数占位符数必须与传递给EXECUTE的参数值的数量相同。

如果您使用某些应用程序语言(如Java,Ruby或Python)准备和执行查询,而不是使用PREPAREEXECUTE,这将更容易。