2017-02-28 18 views
-1

當您嘗試運行查詢並查看錯誤#1064時 - 您的SQL語法中有錯誤;檢查對應於您MariaDB的服務器版本在線路附近使用「」正確的語法5告訴我如何解決#1064 - 您的SQL中有錯誤

CREATE FUNCTION CreateGroup(GroupName VARCHAR(50), GroupIcon TEXT, GroupDescription VARCHAR(130), GroupCreator INT) 
    RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
    DECLARE groupID INT; 
    INSERT INTO groups (name, icon, description) VALUES (GroupName, GroupIcon, GroupDescription); 
    SET groupID = LAST_INSERT_ID(); 
    INSERT INTO group_members VALUES (groupID, GroupCreator); 
    RETURN groupID; 
END; 
CREATE FUNCTION AddMessage(r VARCHAR(255), s INT, t INT, m VARCHAR(255), creation DATETIME) 
    RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
     DECLARE lastID INT; 
     DECLARE receiver INT; 
     SELECT id INTO receiver from users WHERE username=r; 
     INSERT INTO messages (receiver_id, sender_id, msg_type, message, created_At) values(receiver, s, t, m, creation); 
     SET lastID = LAST_INSERT_ID(); 
     INSERT INTO messages_receipt (message_id, user_id, is_delivered) VALUES (lastID, receiver, 0); 
     RETURN lastID; 
END; 

CREATE FUNCTION AddGroupMessage(gid INT, s INT, t INT, m VARCHAR(255), creation DATETIME) 
    RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
    DECLARE lastID INT; DECLARE rowCount INT; 
    SELECT COUNT(*) INTO rowCount FROM group_members WHERE user_id = s AND group_id = gid; 
    IF rowCount = 1 THEN 
    INSERT INTO group_messages (group_id, user_id, msg_type, message, created_at) VALUES (gid, s, t, m, creation); 
    SET lastID = LAST_INSERT_ID(); 
    INSERT INTO group_receipt (message_id, user_id, is_delivered) SELECT gm.message_id, gmembers.user_id, 0 FROM 
    group_messages gm LEFT JOIN group_members gmembers ON gmembers.group_id = gm.group_id WHERE gm.group_id = gid AND gm.message_id = lastID AND NOT gmembers.user_id = s; 
    RETURN lastID; 
    ELSE 
    return 0; 
    END IF; 
END; 

CREATE DEFINER = 'inikspbh_weeki'@'localhost' 
FUNCTION AddGroupMember(GroupID INT, MemberName VARCHAR(255), Username INT) 
    RETURNS int(11) 
BEGIN 
    INSERT INTO group_members VALUES (GroupID, MemberName); 
    RETURN 1; 
END; 
+0

關於引用varchar數據類型術語的單引號使用php術語 –

+0

您是否更改了DELIMITER? – Strawberry

回答

0

必須使用delimiter來分隔造成的功能手動

 DELIMITER $$ 
DROP FUNCTION IF EXISTS `CreateGroup` $$ 
CREATE FUNCTION CreateGroup(GroupName VARCHAR(50), GroupIcon TEXT, GroupDescription VARCHAR(130), GroupCreator INT) 
    RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
    DECLARE groupID INT; 
    INSERT INTO groups (name, icon, description) VALUES (GroupName, GroupIcon, GroupDescription); 
    SET groupID = LAST_INSERT_ID(); 
    INSERT INTO group_members VALUES (groupID, GroupCreator); 
    RETURN groupID; 
END; 
DROP FUNCTION IF EXISTS `AddMessage` $$ 
CREATE FUNCTION AddMessage(r VARCHAR(255), s INT, t INT, m VARCHAR(255), creation DATETIME) 
    RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
     DECLARE lastID INT; 
     DECLARE receiver INT; 
     SELECT id INTO receiver from users WHERE username=r; 
     INSERT INTO messages (receiver_id, sender_id, msg_type, message, created_At) values(receiver, s, t, m, creation); 
     SET lastID = LAST_INSERT_ID(); 
     INSERT INTO messages_receipt (message_id, user_id, is_delivered) VALUES (lastID, receiver, 0); 
     RETURN lastID; 
END;$$ 

DROP FUNCTION IF EXISTS `AddGroupMessage` $$ 
CREATE FUNCTION AddGroupMessage(gid INT, s INT, t INT, m VARCHAR(255), creation DATETIME) 
    RETURNS int(11) 
    DETERMINISTIC 
BEGIN 
    DECLARE lastID INT; DECLARE rowCount INT; 
    SELECT COUNT(*) INTO rowCount FROM group_members WHERE user_id = s AND group_id = gid; 
    IF rowCount = 1 THEN 
    INSERT INTO group_messages (group_id, user_id, msg_type, message, created_at) VALUES (gid, s, t, m, creation); 
    SET lastID = LAST_INSERT_ID(); 
    INSERT INTO group_receipt (message_id, user_id, is_delivered) SELECT gm.message_id, gmembers.user_id, 0 FROM 
    group_messages gm LEFT JOIN group_members gmembers ON gmembers.group_id = gm.group_id WHERE gm.group_id = gid AND gm.message_id = lastID AND NOT gmembers.user_id = s; 
    RETURN lastID; 
    ELSE 
    return 0; 
    END IF; 
END;$$ 

DROP FUNCTION IF EXISTS `AddGroupMember` $$ 
CREATE DEFINER = 'inikspbh_weeki'@'localhost' FUNCTION AddGroupMember(GroupID INT, MemberName VARCHAR(255), Username INT) 
    RETURNS int(11) 
BEGIN 
    INSERT INTO group_members VALUES (GroupID, MemberName); 
    RETURN 1; 
END;$$ 
delimiter ; 
相關問題