Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате етикета goto в съхранената функция на MySQL

Има случаи 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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как показват, че многоизмерните масиви се вмъкват в MySQL таблица?

  2. Невалидна стойност по подразбиране за „Дата“

  3. Бърз старт на миграцията на база данни с помощта на Talend

  4. Защо може да има само една колона TIMESTAMP с CURRENT_TIMESTAMP в клаузата DEFAULT?

  5. Symfony2 Doctrine PDO MySQL връзка с LOAD DATA LOCAL INFILE