没有参数的MySql存储过程调用在SqlFiddle上返回错误

Posted

技术标签:

【中文标题】没有参数的MySql存储过程调用在SqlFiddle上返回错误【英文标题】:MySql stored procedure call with out parameter returns error on SqlFiddle 【发布时间】:2015-03-13 10:26:01 【问题描述】:

我在 sqlfiddle

上为 mysql 架构创建了以下存储过程
create procedure foobar(out msg int)
begin
set msg = 100;
end//

当我运行查询以访问 out 参数时使用

call foobar(@outval);
SELECT @outval;

我收到以下错误

ResultSet 来自 UPDATE。没有数据。

我不确定我做错了什么。请提出建议。

我以此为参考MySQL create stored procedure syntax with delimiter

Sql 小提琴链接:http://sqlfiddle.com/#!9/a2182/6

【问题讨论】:

在 SQL Fiddle 的存储过程中使用以下技巧:set msg = 100; select msg; @wchiquito 不知何故,之前给出错误的完全相同的代码现在在 sqlfiddle 上运行良好。可能有人正在解决这个问题:) 【参考方案1】:

你在开头缺少delimiter,所以它应该是

delimiter //
create procedure foobar(out msg int)
begin
 set msg = 100;
end;//

delimiter ;

这是一个mysql cli中的测试用例

mysql> delimiter //
mysql> create procedure foobar(out msg int)
    -> begin
    ->  set msg = 100;
    -> end;//
Query OK, 0 rows affected (0.05 sec)
mysql> delimiter ;
mysql> call foobar(@outval);
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT @outval;
+---------+
| @outval |
+---------+
|     100 |
+---------+
1 row in set (0.01 sec)

【讨论】:

为什么需要在 sqlfiddle 上执行程序?为什么不在你的mysql服务器上试试呢? 因为我无法在本地安装mysql服务器(安装限制)。 sqlfiddle 在给定的时间可能有很多问题,你真的无法继续关注它。如果您想学习,请安装mysql并尝试一下。

以上是关于没有参数的MySql存储过程调用在SqlFiddle上返回错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google App Script 中使用参数调用 MySQL 存储过程?

12.Mysql存储过程和函数

用JAVA调用Mysql数据库,数据存储过程的封装与调用;

MySql中存储过程的理解

MySQL之存储过程

mysql 存储过程执行异常,参数不是出参