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 に答える