如果我使用OUT或INOUT参数在MySQL中创建一个存储过程,它将无法工作。即使我把存储过程保持为空。DDL的内容如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `testing_inout`(`a` int,INOUT `b` int)
BEGIN
END第一个参数是一个正规的IN参数。第二个是INOUT参数表(即使设置为相同的问题仍然存在)
当我调用这个存储过程时,我会得到一个错误,声明:
对于例程db_name.testing_inout,OUT或INOUT参数2不是触发器前的变量或新伪变量。
即使代码是在存储过程中编写的,此错误仍然存在。我正在运行mysql版本5.1.41。
这对我来说是个大问题,因为由于这个错误,我无法输出递归存储过程的结果。
发布于 2012-06-29 19:51:00
对我来说很管用
mysql> CREATE DEFINER=`root`@`localhost` PROCEDURE `testing_inout`(`a` int,INOUT `b` int)
-> BEGIN
->
-> END
-> ;
Query OK, 0 rows affected (0.00 sec)第二个参数,因为它是inout,所以它需要是一个变量:
mysql> set @c:=1;
Query OK, 0 rows affected (0.00 sec)
mysql> call testing_inout(1,@c);
Query OK, 0 rows affected (0.00 sec)如果您尝试这样做,它将返回1:
delimiter |
CREATE DEFINER=`root`@`localhost` PROCEDURE `testing_inout`(`a` int,INOUT `b` int)
BEGIN
select b;
END
|
delimiter ;
mysql> call testing_inout(1,@c);
+------+
| b |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)https://stackoverflow.com/questions/11267868
复制相似问题