4

次のようなストアド プロシージャがあります。

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

もう1つのことは、挿入コードを実行するだけで実行されることです!

助けてください。

4

4 に答える 4

11

当然のことながら、あなたのやり方は、準備されたステートメントの目的全体を無効にします。代わりにこのフォームを使用します。

SET @query = 'INSERT INTO tblcommodity (id, idname, count) VALUES (?, ?, ?)';
PREPARE stmt FROM @query;
EXECUTE stmt USING @p1, @p2, @p3;
于 2012-12-22T13:30:00.520 に答える
3

そのはず

SET @query = CONCAT('insert into tblcommodity (id , idname , count)values (',',',p1,',', p2,',',p3,')');
于 2012-12-22T13:27:48.993 に答える
1

これを試して:

SET @query = CONCAT("insert into tblcommodity (id , idname , count) values (", p1, ", '", p2,"',",p3,")"); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt;
于 2012-12-22T13:31:02.183 に答える