delimiter $$
CREATE PROCEDURE disagree_upgrade_detail(a int,b text)
BEGIN
SET NAMES 'utf8';
UPDATE `upgrade_detail` SET `disagree_description`=b WHERE `id`=a;
INSERT INTO `disagree_upgrade_detail` SELECT * from `upgrade_detail` WHERE `id`=a;
DELETE FROM `upgrade_detail` WHERE `id`=a;
END;
$$
MysqL_query("CALL disagree_upgrade_detail({$which},'{$why}');");
后来在跑程序的时候发现一个问题。
最后我在http://topic.csdn.net/u/20070703/09/fbceeb45-1c8d-4009-ac84-cabe9fc315d7.html中找到了答案。对其进行了如下修改
delimiter $$
CREATE PROCEDURE disagree_upgrade_detail(a int,b varchar(4000))
BEGIN
UPDATE `upgrade_detail` SET `disagree_description`=b WHERE `id`=a;
INSERT INTO `disagree_upgrade_detail` SELECT * from `upgrade_detail` WHERE `id`=a;
DELETE FROM `upgrade_detail` WHERE `id`=a;
END;
$$
MysqL_query("CALL disagree_upgrade_detail({$which},'{$why}');");
需要注意的代码已经标绿。在创建存储过程的时候,中文的参数的数据类型需为Nvarchar,而在传递参数的时候也需要多加一个N。