MySql-存储函数语法错误

MySql-存储函数语法错误,mysql,Mysql,SQL: 错误: #1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第4行“”附近要使用的正确语法 语法错误在哪里?您需要在函数周围加一个分隔符 CREATE FUNCTION delete_user (uId INT) RETURNS BOOLEAN BEGIN IF uID >= 0 THEN START TRANSACTION; DELETE FROM Folder WHERE u_id = uId;

SQL:

错误:

#1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第4行“”附近要使用的正确语法


语法错误在哪里?

您需要在函数周围加一个分隔符

CREATE FUNCTION delete_user (uId INT) RETURNS BOOLEAN
BEGIN
    IF uID >= 0 THEN
        START TRANSACTION;
        DELETE FROM Folder WHERE u_id = uId;
        DELETE FROM `User` WHERE id = uId;
        RETURN 1;
    END IF;
    RETURN 0;
END;

默认分隔符是
。但是如果您想创建过程/函数,DB引擎会认为您的语句在第一个
处结束。这将导致一份不完整的声明。您可以定义另一个分隔符,然后使用它来标记语句的结束。

START | BEGIN TRANSACTION
不使用
COMMIT
?如果启用了
auto\u COMMIT
,则不需要执行
START TRANSACTION我不能在函数中使用START\u TRANSACTION?我删除了“START\u TRANSACTION”并添加了分隔符。但还是会犯同样的错误吗?@Gabriel:我试的时候没有错误。我在回答中添加了完整的函数。
delimiter |
CREATE FUNCTION delete_usr (uId INT) RETURNS BOOLEAN
BEGIN
    IF uID >= 0 THEN        
        DELETE FROM Folder WHERE u_id = uId;
        DELETE FROM `User` WHERE id = uId;
        RETURN 1;
    END IF;
    RETURN 0;
END
|
delimiter ;