Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 &引用;DECLARE在此位置无效,应为END“;使用声明退出处理程序时_Mysql_Mysql Workbench - Fatal编程技术网

Mysql &引用;DECLARE在此位置无效,应为END“;使用声明退出处理程序时

Mysql &引用;DECLARE在此位置无效,应为END“;使用声明退出处理程序时,mysql,mysql-workbench,Mysql,Mysql Workbench,MySQL版本:5.7 我有一个MySQL存储过程,当我添加一个退出处理程序时失败,工具提示中出现以下错误: DECLARE在此位置无效,应为END SQL Workbench返回以下错误: 错误代码:1064。您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 用于SQLEXCEPTION BEGIN的near“声明退出处理程序”的语法 回降;退出程序第17行 如果我删除它创建的代码而没有问题。以下是重命名元素的代码: DROP PROCEDURE IF EXISTS `My

MySQL版本:5.7

我有一个MySQL存储过程,当我添加一个退出处理程序时失败,工具提示中出现以下错误:

DECLARE在此位置无效,应为END

SQL Workbench返回以下错误:

错误代码:1064。您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 用于SQLEXCEPTION BEGIN的near“声明退出处理程序”的语法
回降;退出程序第17行

如果我删除它创建的代码而没有问题。以下是重命名元素的代码:

DROP PROCEDURE IF EXISTS `MyProcedureName`;

DELIMITER $$
CREATE DEFINER=`username`@`%` PROCEDURE `MyProcedureName`(
    IN var1 int,
    IN var2 int,
    IN var3 int,
    IN var4 VARCHAR(45),
    IN var5 VARCHAR(5000),
    IN var6 VARCHAR(5000),
    IN var7 VARCHAR(5000),
    IN var8 VARCHAR(5000)
)
BEGIN
    DECLARE var9 int;
    DECLARE var10 int;
    DECLARE var11 int;
    START TRANSACTION;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
        BEGIN
            ROLLBACK;
            EXIT PROCEDURE;
        END;
        
    <Insert statements>
    
    COMMIT;
END$$
DELIMITER ;
删除过程(如果存在)`MyProcedureName`;
分隔符$$
CREATE DEFINER=`username`@`%`PROCEDURE`MyProcedureName`(
在var1 int中,
在var2 int中,
在var3 int中,
在var4 VARCHAR(45)中,
在var5 VARCHAR(5000)中,
在var6 VARCHAR(5000)中,
在var7 VARCHAR(5000)中,
在var8 VARCHAR(5000)中
)
开始
声明var9 int;
声明var10 int;
声明var11 int;
启动交易;
为SQLEXCEPTION声明退出处理程序
开始
回降;
退出程序;
结束;
犯罪
结束$$
定界符;

在declare节之后但在开始之前的处理程序Transaction@LukaszSzozda我以为我已经试过了,但还是按照你的建议再试了一次。但是,退出过程中出现错误。我注意到您的代码中的退出过程。假设它是不必要的,因为这是一个退出处理程序,对吗?1)SQL中不存在EXIT PROCEDURE语句2)它不是必需的-处理程序本身就是EXIT one,因此在它执行后,过程将完成。