Ошибка 1064 в процедуре
ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии вашего сервера MySQL для правильного синтаксиса для использования рядом с '= (se читать ifnull(max(изготовления Id+1),1) от tbl_Manufacturer);
create procedure ManufactureAdd(
p_manufactureName longtext,
p_address longtext,
p_phone varchar(50),
p_email varchar(50),
p_description longtext
)
begin
declare p_manufactureId = (select ifnull(max(manufactureId+1),1) from tbl_Manufacturer
) ;
insert into tbl_Manufacturer(
manufactureId,
manufactureName,
address,
phone,
email,
description
)
VALUES
(
p_manufactureId,
p_manufactureName,
p_address,
p_phone,
p_email,
p_description
) ;
SELECT p_manufactureId ;
end
2 ответа
Решение
Попробуйте использовать предложение SELECT..INTO и простую пользовательскую переменную -
CREATE PROCEDURE ManufactureAdd(
p_manufactureName longtext,
p_address longtext,
p_phone varchar(50),
p_email varchar(50),
p_description longtext)
BEGIN
SELECT IFNULL(MAX(manufactureId + 1), 1) INTO @p_manufactureId FROM tbl_Manufacturer;
INSERT INTO tbl_Manufacturer (manufactureId, manufactureName, address, phone, email, DESCRIPTION)
VALUES (@p_manufactureId, p_manufactureName, p_address, p_phone, p_email, p_description);
SELECT @p_manufactureId;
END
Попробуй это:
CREATE PROCEDURE ManufactureAdd(
p_manufactureName LONGTEXT,
p_address LONGTEXT,
p_phone VARCHAR(50),
p_email VARCHAR(50),
p_description LONGTEXT
)
BEGIN
DECLARE p_manufactureId INT;
SELECT IFNULL(MAX(manufactureId+1),1) INTO p_manufactureId FROM tbl_Manufacturer;
INSERT INTO tbl_Manufacturer(
manufactureId, manufactureName, address, phone, email, description
)
VALUES (
p_manufactureId, p_manufactureName, p_address, p_phone, p_email, p_description
);
SELECT p_manufactureId ;
END