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;
#
일련의 산술 시퀀스를 반복합니다. 이 코드는 처음 두 매개 변수가 무엇인지에 따라 더하거나 빼야합니다. 그런 다음 단계 값이 양수인지 음수인지 확인합니다. I라는 오류가있는 구문을 확인 받고 있어요 :케이스가있는 경우의 mysql 프로 시저
set v_start = v_start + v_step ;
select v_start as 'The Loop Output';
set v_step = v_step - 1;
그럼 내가 통해 내 코드를 실행하는을 포함하여 두 문장을 삭제. 오류가 없습니다. 하지만 지금 나는 무엇을 해야할지 잘 모릅니다. 무엇을 수정해야하는지 모르겠습니다. 어떤 제안? 고맙습니다.
오류가 당신이 얻고있는 것이 무엇인지에 대한 정보가없는 무의미 "나는 오류가 받고 있어요"를 참조하십시오. ** 정확한 ** 오류 메시지를 포함하여 해당 정보를 제공하도록 질문을 편집하십시오. 우리는 당신의 마음을 읽거나 여기에서 당신의 스크린을 볼 수 없습니다. –
내가 발췌 문장을 잘못 읽는 것을 보았으므로 주석의 해당 부분을 편집했습니다. :-) 오류 정보는 여전히 필요합니다. 이상하게도 내 의견의 일부를 놓치 셨습니다. ;-) –
게시물 자체에서 편집 ... 그 snip-it 근처에 올바른 구문을 확인하는 오류가 발생했습니다. – user1682055