假设有些像这样
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;
在这种情况下获取错误
执行语句
的参数不正确
答案 0 :(得分:3)
MySQL支持位置查询参数,而不是命名查询参数。
SQL查询中的参数占位符数必须与传递给EXECUTE
的参数值的数量相同。
如果您使用某些应用程序语言(如Java,Ruby或Python)准备和执行查询,而不是使用PREPARE
和EXECUTE
,这将更容易。