Có những trường hợp GOTO không thể được triển khai trong MySQL, như nhảy ngược mã (và một điều tốt nữa).
Nhưng đối với một cái gì đó như ví dụ của bạn, nơi bạn muốn chuyển từ mọi thứ đến một chuỗi câu lệnh cuối cùng, bạn có thể tạo một khối BEGIN / END xung quanh mã để nhảy ra khỏi:
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;
Vì mã của bạn chỉ là một số IF lồng nhau, cấu trúc là không cần thiết trong mã đã cho. Nhưng nó có ý nghĩa hơn đối với LOOP / WHILE / REPEAT để tránh nhiều câu lệnh RETURN từ bên trong vòng lặp và để hợp nhất quá trình xử lý cuối cùng (giống như TRY / FINALLY).