使用具有多个值的变量作为参数插入

时间:2015-12-11 12:32:20

标签: mysql arrays mysqli

我在使用数组作为参数时遇到问题。我已经破坏了我的数组,所以它会显示带有括号的值,例如,list1 =(1),(2),(3)

BEGIN
CREATE TEMPORARY TABLE tmp (id Int NOT NULL  PRIMARY KEY);

INSERT INTO tmp (id) VALUES list1; //wont compile procedure
INSERT INTO tmp (id) VALUES (list1); //compiles however I can't put my array because the parentheses around the parameter ?
select * from tmp
END

参数 - > Direction = IN,Name = list1,Type = Varchar,Length = 8000,Options = Charset

我不确定我做错了什么,非常感谢任何帮助

更新:

我不认为你理解我想要完成的事情。我在list1中有多个值,我试图插入。 list1 =(1),(2),(3)但是编译器只允许我使用带有括号的list1,即使我已经用必要的括号填充了我的字符串。那么我尝试使用' 1),(2),(3'但它只输出1,这是第一个值

我没有插入临时表的问题,我在使用数组(list1)进行插入时遇到问题....

1 个答案:

答案 0 :(得分:0)

不了解完整背景,我不知道这是否是最佳解决方案,但它是一种解决方案。

通过使用预备声明,我在类似情况下取得了成功。在你的情况下,它可能看起来像

  SET @stmt := CONCAT("INSERT INTO t1 (id) VALUES ", list1);

  PREPARE p_stmt FROM @stmt;
  EXECUTE p_stmt;
  DEALLOCATE PREPARE p_stmt;