我有一个这样的存储过程:
SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',p1, p2,p3,')');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
但是当我想运行它时,它有这个错误:
> Procedure execution failed 1136 - Column count doesn't match value
> count at row 1
另一件事是,当我运行插入代码时,它会运行!
请帮助我。
答案 0 :(得分:11)
在充分尊重的情况下,你这样做的方式会破坏预备陈述的整个目的。我会改用这个表格:
SET @query = 'INSERT INTO tblcommodity (id, idname, count) VALUES (?, ?, ?)';
PREPARE stmt FROM @query;
EXECUTE stmt USING @p1, @p2, @p3;
答案 1 :(得分:3)
应该是
SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',',',p1,',', p2,',',p3,')');
答案 2 :(得分:1)
试试这个:
SET @query = CONCAT("insert into tblcommodity (id , idname , count) values (", p1, ", '", p2,"',",p3,")");
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 3 :(得分:0)
BTW,您的代码:
SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',p1, p2,p3,')');
有一个逗号开头:
,p1,p2,p3
它表示声明中的四个字段。 这就是为什么你得到“列数与值不匹配”