没有参数的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上返回错误的主要内容,如果未能解决你的问题,请参考以下文章