Mysql 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'';第23行

Mysql 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'';第23行,mysql,sql,mariadb,Mysql,Sql,Mariadb,我尝试使用以下Mysql查询创建过程,但总是出现错误: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 23 这是我的SQL语句,基本上我希望获取、设置、更新我的数据信息 USE AddressBook; DELIMITER

我尝试使用以下Mysql查询创建过程,但总是出现错误:

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 23
这是我的SQL语句,基本上我希望获取、设置、更新我的数据信息

USE AddressBook;
    DELIMITER $$
    CREATE PROCEDURE CreateContact (
                IN FirstName_IN VARCHAR(50) = null,
      IN LastName_IN VARCHAR(50) = null,
      IN Phone_IN VARCHAR(20) = null,
      IN Email_IN VARCHAR(50) = null,
      IN Address_IN VARCHAR(100) = null,
      IN City_IN VARCHAR(30) = null,
      IN State_IN VARCHAR(30) = null,
      IN Country_IN VARCHAR(30) = null,
      IN PostalCode_IN VARCHAR(10) = null,
      OUT id INT)
    BEGIN
      INSERT INTO AddressBook.Contact (
        FirstName,
        LastName,
        Phone,
        Email,
        Address,
        City,
        State,
        Country,
       PostalCode)
       VALUES (FirstName_IN, LastName_IN, Phone_IN, Email_IN, Address_IN, City_IN, State_IN, Country_IN, PostalCode_IN)$$
    END$$
    DELIMITER $$;
    CREATE PROCEDURE AddressBook.CreateContactImage (
              IN FirstName_IN VARCHAR(50) = null,
      IN LastName_IN VARCHAR(50) = null,
      IN Phone_IN VARCHAR(20) = null,
      IN Email_IN VARCHAR(50) = null,
      IN Address_IN VARCHAR(100) = null,
      IN City_IN VARCHAR(30) = null,
      IN State_IN VARCHAR(30) = null,
      IN Country_IN VARCHAR(30) = null,
      IN PostalCode_IN VARCHAR(10) = null,
      Id INT OUTPUT)
    BEGIN
      INSERT INTO AddressBook.Contact (
        FirstName,
        LastName,
        Phone,
        Email,
        Address,
        City,
        State,
        Country,
       PostalCode)
       VALUES (FirstName_IN, LastName_IN, Phone_IN, Email_IN, Address_IN, City_IN, State_IN, Country_IN, PostalCode_IN)
    END$$;
    DELIMITER $$;
    CREATE PROCEDURE AddressBook.CreateContactImage (
    IN ImageName_IN VARCHAR(50),
    IN ImagePath_IN VARCHAR(21844),
    IN ContactId_IN INT,
    Id INT OUTPUT)
    BEGIN
    INSERT INTO AddressBook.ContactImage (ImageName,ImagePath,ContactId)
         VALUES (ImageName_IN,ImagePath_IN,ContactId_IN)
    END$$;
    DELIMITER $$;
    CREATE PROCEDURE AddressBook.DeleteContact (
    Id_IN INT)
    BEGIN
    DELETE FROM AddressBook.Contact
          WHERE Id = Id_IN
    END$$;
    DELIMITER $$;
    CREATE PROCEDURE AddressBook.GetAllContacts ()
    BEGIN
    SELECT *  FROM dbo.Contact
    END$$;
    DELIMITER $$;
    CREATE PROCEDURE AddressBook.GetAllImageByContactId (
    ContactId_IN INT)
    BEGIN
    SELECT * FROM  AddressBook.ContactImage
               where ContactId = ContactId_IN
    END$$;
    DELIMITER $$;
    CREATE PROCEDURE AddressBook.GetContactById (
    Id_IN INT)
    BEGIN
    select *  FROM AddressBook.Contact
          WHERE Id = Id_IN
    END$$;
    DELIMITER $$;
    create procedure AddressBook.UpdateContact
    FirstName_IN VARCHAR(50) = null,
      LastName_IN VARCHAR(50) = null,
      Phone_IN VARCHAR(20) = null,
      Email_IN VARCHAR(50) = null,
      Address_IN VARCHAR(100) = null,
      City_IN VARCHAR(30) = null,
      State_IN VARCHAR(30) = null,
      Country_IN VARCHAR(30) = null,
      PostalCode_IN VARCHAR(10) = null,
      Id_IN INT)
    BEGIN
    UPDATE AddressBook.Contact
       SET FirstName = FirstName_IN
          ,LastName = LastName_IN
          ,Phone = Phone_IN
          ,Email = Email_IN
          ,Address = Address_IN
          ,City = City_IN
          ,State = State_IN
          ,Country = Country_IN
          ,PostalCode = PostalCode_IN
     WHERE Id = Id_IN
     END$$;
     DELIMITER ;

有人能帮我纠正这个错误吗?

我相信你也缺少了一个括号:

create procedure AddressBook.UpdateContact
。。。应该是:

create procedure AddressBook.UpdateContact(

由于另一个用户提到了分隔符语法,我的只是另一个潜在问题。
PostalCode\u IN)$$$
END$$
应该是
PostalCode\u IN)
结束$$
…在“”附近使用的语法
表示语句结尾(由分隔符标记)出现在不合逻辑的位置。就像这里一样。使用不同的分隔符是令人困惑的:
$
,然后是
$$只需执行
$
。也不需要立即执行所有这些
创建过程。您可以一次做一个,当遇到错误时,这正是您应该做的。它可以帮助你缩小问题的范围。