MySql-存储函数语法错误
SQL: 错误: #1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第4行“”附近要使用的正确语法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;
语法错误在哪里?您需要在函数周围加一个分隔符
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 ;