首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OUT或INOUT参数不工作

OUT或INOUT参数不工作
EN

Stack Overflow用户
提问于 2012-06-29 19:31:08
回答 1查看 9.9K关注 0票数 1

如果我使用OUT或INOUT参数在MySQL中创建一个存储过程,它将无法工作。即使我把存储过程保持为空。DDL的内容如下:

代码语言:javascript
复制
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。

这对我来说是个大问题,因为由于这个错误,我无法输出递归存储过程的结果。

EN

回答 1

Stack Overflow用户

发布于 2012-06-29 19:51:00

对我来说很管用

代码语言:javascript
复制
mysql> CREATE DEFINER=`root`@`localhost` PROCEDURE `testing_inout`(`a` int,INOUT `b` int)
    -> BEGIN
    -> 
    -> END
    -> ;
Query OK, 0 rows affected (0.00 sec)

第二个参数,因为它是inout,所以它需要是一个变量:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11267868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档