更新TIME mysql存储过程

时间:2013-07-13 01:52:38

标签: mysql stored-procedures

mySql : 您的SQL查询已成功执行

0行受过程

中的最后一个语句的影响
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_adm`(OUT `sp_out` INT(11), IN `sp_email` VARCHAR(50) CHARSET utf8)
NO SQL
BEGIN 
UPDATE `admin` SET `last_try`=curtime() WHERE `email`=sp_email;
SET sp_out=ROW_COUNT();
END

为什么0行受到过程中最后一个语句的影响?!

编辑:

当我在存储过程中使用navid@yahoo.com这样的正确值替换sp_email时,它完美无缺!

CREATE DEFINER=`root`@`localhost` PROCEDURE `update_adm`()
NO SQL
BEGIN 
UPDATE `admin` SET `last_try`=curtime() WHERE `email`='navid@yahoo.com';
END

1 个答案:

答案 0 :(得分:0)

从MySQL命令行,输出符合预期。

mysql> delimiter $$
mysql> CREATE DEFINER=`root`@`localhost PROCEDURE update_adm( ...
    -> END$$
Query OK, 0 rows affected (0.16 sec)

mysql> delimiter ;

mysql> insert into admin values (null,'foo');
Query OK, 1 row affected (0.00 sec)

mysql> call update_adm(@cnt,'foo');
Query OK, 1 row affected (0.00 sec)

mysql> call update_adm(@cnt,'bar');
Query OK, 0 rows affected (0.00 sec)

当我使用存在的电子邮件调用该过程时,我收到一条消息,显示1行受到影响。当我使用确实存在的电子邮件调用该过程时,它会返回一条消息,显示受影响的0行。

我相信您看到的消息来自客户端界面。您使用什么客户来调用该程序?