ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '= (se
lect ifnull(max(manufactureId+1),1) from 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

最佳答案

尝试使用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

07-26 04:48