2012-06-21 4 views
3

MySQL 저장 함수에서 goto를 사용하고 싶습니다. 어떻게 사용할 수 있습니까? 샘플 코드 :MySQL 저장 함수에서 goto 레이블을 사용하는 방법

if (action = 'D') then 
    if (rowcount > 0) then 
     DELETE FROM datatable WHERE id = 2;  
    else 
     SET p=CONCAT('Can not delete',@b); 
     goto ret_label; 
    end if; 
end if; 

Label: ret_label; 
return 0; 

답변

5

코드에서 뒤로 점프하는 것과 같이 MySQL에서 구현할 수없는 GOTO 사례가 있습니다 (좋은 점도 있습니다).

하지만이 문장의 마지막 시리즈에 대한 모든 것을 뛰어하려는 예와 같이 뭔가를, 당신이 밖으로 뛰어 코드를 둘러싼 BEGIN/END 블록 생성 할 수 있습니다

:

aBlock:BEGIN 
    if (action = 'D') then 
     if (rowcount > 0) then 
      DELETE FROM datatable WHERE id = 2;  
     else 
      SET p=CONCAT('Can not delete',@b); 
      LEAVE aBlock; 
     end if; 
    end if; 
END aBlock; 
return 0; 

를 이후 코드는 단지 일부 중첩 된 IF이므로, 해당 코드에서는 구문이 필요 없습니다. 그러나 LOOP/WHILE/REPEAT가 루프 내부의 여러 RETURN 문을 피하고 최종 처리를 통합하는 것이 더 적합합니다 (TRY/FINALLY와 비슷합니다).