2012-06-21 43 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

有GOTO的情况下,不能在MySQL中实现,就像在代码中向后跳(也是一件好事)。

但要跳出一切到最后的一系列语句像你的榜样,你可以创建围绕码跳出的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)。