我在使用数组作为参数时遇到问题。我已经破坏了我的数组,所以它会显示带有括号的值,例如,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)进行插入时遇到问题....
答案 0 :(得分:0)
不了解完整背景,我不知道这是否是最佳解决方案,但它是一种解决方案。
通过使用预备声明,我在类似情况下取得了成功。在你的情况下,它可能看起来像
SET @stmt := CONCAT("INSERT INTO t1 (id) VALUES ", list1);
PREPARE p_stmt FROM @stmt;
EXECUTE p_stmt;
DEALLOCATE PREPARE p_stmt;