Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL存储函数中使用goto标签_Mysql_Goto_Stored Functions - Fatal编程技术网

如何在MySQL存储函数中使用goto标签

如何在MySQL存储函数中使用goto标签,mysql,goto,stored-functions,Mysql,Goto,Stored Functions,我想在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;

我想在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;

MySQL存储过程中没有GOTO。你可以参考这篇文章:

有些GOTO案例无法在MySQL中实现,比如代码向后跳(这也是一件好事)

但对于您的示例中希望跳出所有内容到最后一系列语句的情况,您可以围绕要跳出的代码创建一个开始/结束块:

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;
由于您的代码只是一些嵌套的IFs,因此在给定代码中不需要构造。但是,对于LOOP/WHILE/REPEAT来说,避免来自循环内部的多个返回语句并整合最终处理(有点像TRY/FINALLY)更有意义