我有这样的存储过程:
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
另一件事是,当我刚运行插入代码时,它运行!
plz帮助我。
有了所有应有的尊重,您的做法却打败了准备的语句的全部目的。我会使用此表格:
SET @query = 'INSERT INTO tblcommodity (id, idname, count) VALUES (?, ?, ?)';
PREPARE stmt FROM @query;
EXECUTE stmt USING @p1, @p2, @p3;
应该是
SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',',',p1,',', p2,',',p3,')');
尝试以下:
SET @query = CONCAT("insert into tblcommodity (id , idname , count) values (", p1, ", '", p2,"',",p3,")");
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
btw,您的代码:
SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',p1, p2,p3,')');
有一个起始逗号:
,p1,p2,p3
这意味着语句中的四个字段。这就是为什么您获得"列计数不匹配值"