Create procedure count_loop(p_start int,
p_stop int,
p_step int unsigned,
p_delim varchar(5))
begin
declare v_start int ;
declare v_stop int ;
declare v_step int ;
declare v_sign int;
declare v_sum int;
-- check p_start
case p_start
when null then
set v_start := 1;
else
set v_start := p_start;
end case;
-- check p_stop
case p_stop
when null then
set v_stop := 10;
else
set v_stop := p_stop;
end case;
-- check p_stop
case p_step
when null then
set v_step := 1;
when 0 then
set v_step := 1;
else
set v_step := p_step;
end case;
-- set v_sign as v_stop - v_start
set v_sign := (v_stop - v_start) ;
case
-- if v_sign and v_step are negative,
-- then run while loop
when v_sign < 0 and v_step < 0 then
while v_start > v_stop then
set v_start = v_start + v_step ;
select v_start as 'The Loop Output';
set v_step = v_step - 1;
end while;
-- if both v_sign and v_step are positive
-- then run loop
when v_sign > 0 and v_step > 0 then
while v_start > v_stop then
set v_start := v_start + v_step ;
select v_start as 'The Loop Output';
set v_step := v_step + 1;
end while;
-- if v_sign and v_step are different signs
-- terminate loop
when v_sign > 0 and v_step < 0 then
select 'Loop collapsed' as 'The Loop Output' ;
when v_sign < 0 and v_step > 0 then
select 'Loop collapsed' as 'The Loop Output' ;
end case ;
end;
#
Я прохожу через ряд арифметических последовательностей. Этот код должен либо добавлять, либо вычитать, в зависимости от того, что из первых двух параметров. Затем мы проверяем, является ли значение шага положительным или отрицательным. Я получаю сообщение об ошибке, которое говорит, чтобы проверить синтаксис в:mysql процедура в то время как случай
set v_start = v_start + v_step ;
select v_start as 'The Loop Output';
set v_step = v_step - 1;
Затем я удалил два, когда заявления, которые содержат, что и побежал мой код до конца. Ошибок не было. Но теперь я не уверен, что делать дальше. Я не вижу, что нужно исправить. Какие-либо предложения? Спасибо.
«Я получаю сообщение об ошибке» не имеет смысла без информации о том, что ошибка в том, что вы получаете. Измените свой вопрос, чтобы предоставить эту информацию, включая ** точное сообщение об ошибке **, которое вы видите. Мы не можем читать ваш ум или видеть ваш экран отсюда. –
Я отредактировал эту часть комментария, так как увидел, что неправильно прочитал фрагмент. :-) Информация об ошибке по-прежнему необходима, хотя - странно, что вы пропустили эту часть моего комментария. ;-) –
Я отредактировал сам пост ... У меня есть сообщение об ошибке, чтобы проверить правильный синтаксис рядом с этим snip-it. – user1682055