0

SQL:

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;

エラー:

#1064 - SQL 構文にエラーがあります。4行目のnear ''を使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

構文エラーはどこにありますか?

4

1 に答える 1

1

関数を区切り記号で囲む必要があります

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 ;

デフォルトの区切り文字は;. ただし、プロシージャ/関数を作成する場合、DB エンジンは、ステートメントが最初の で終了すると見なします;。それは不完全な声明につながるでしょう。別の区切り文字を定義し、それを使用してステートメントの終わりをマークできます。

于 2013-09-19T10:15:20.270 に答える