0

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 行受过程中最后一条语句的影响?!

编辑:

当我sp_email在存储过程中用正确的值(如 navid@yahoo.com)替换时,它可以完美运行!

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

1 回答 1

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 行受影响。

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

于 2013-07-13T02:28:47.263 回答