2015-03-13 1 views
0

Я создал следующую хранимую процедуру для MySql схемы на sqlfiddleMySql вызов хранимой процедуры с выводимым параметром возвращает ошибку на SqlFiddle

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

Когда я выполнить запрос для доступа к выходному параметру, используя

call foobar(@outval); 
SELECT @outval; 

я получаю следующее сообщение об ошибке

ResultSet составляет от UPDATE. Нет данных.

Я не уверен, что я делаю неправильно. Пожалуйста, предложите.

Я принимаю это как ссылки MySQL create stored procedure syntax with delimiter

Sql ссылка скрипку: http://sqlfiddle.com/#!9/a2182/6

+0

В SQL Fiddle используйте th e следующий трюк в хранимой процедуре: 'set msg = 100; select msg; ' – wchiquito

+0

@wchiquito Как-то точно тот же код, который выдавал ошибку ранее, отлично работает на sqlfiddle. Вероятно, кто-то работал над проблемой :) –

ответ

2

Вы пропускаете delimiter на старте, поэтому он должен быть

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

delimiter ; 

Вот тест in 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) 
+0

На самом деле, я получаю ошибку на sqlfiddle. –

+0

Зачем вам нужно выполнить процедуру на sqlfiddle? Почему бы не попробовать на сервере mysql? –

+0

Поскольку я не могу установить локальный сервер mysql (ограничения установки). –