Mysql 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'';第23行
我尝试使用以下Mysql查询创建过程,但总是出现错误: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
#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)代码>结束$$
…在“”附近使用的语法
表示语句结尾(由分隔符标记)出现在不合逻辑的位置。就像这里一样。使用不同的分隔符是令人困惑的:$
,然后是$$代码>只需执行$
。也不需要立即执行所有这些创建过程。您可以一次做一个,当遇到错误时,这正是您应该做的。它可以帮助你缩小问题的范围。