【问题标题】:mysql insert stored procedure throwing an errormysql插入存储过程抛出错误
【发布时间】:2020-05-23 22:51:31
【问题描述】:

我正在尝试使用 Heidisql 在 mysql 中编写存储过程。我不断收到错误。下面是截图:

下面是存储过程的脚本。

CREATE PROCEDURE index_insertPersonadata
(

  IN p_firstName   VARCHAR(50),
  IN p_middleName  VARCHAR(50),
  IN p_lastName    VARCHAR(50),
  IN p_address     VARCHAR(200),
  IN p_City        VARCHAR(50),
  IN p_State       VARCHAR(50),
  IN p_ZIP         VARCHAR(50)
)

BEGIN

INSERT INTO personalrecord(

FirstName,
MiddleName,
LastName,
Address,
City,
state,
ZIP
)
VALUES
(
    p_firstName,
    p_middleName,
    p_lastName,
    p_address,
    p_City,
    p_State,
    p_ZIP
);
END;

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql sql stored-procedures sql-insert


    【解决方案1】:

    就您的问题而言,您只是缺少delimiter 命令:

    DELIMITER //
    CREATE PROCEDURE index_insertPersonadata (
      IN p_firstName   VARCHAR(50),
      IN p_middleName  VARCHAR(50),
      IN p_lastName    VARCHAR(50),
      IN p_address     VARCHAR(200),
      IN p_City        VARCHAR(50),
      IN p_State       VARCHAR(50),
      IN p_ZIP         VARCHAR(50)
    )
    BEGIN
        INSERT INTO personalrecord(FirstName, MiddleName, LastName, Address, City, state, ZIP)
        VALUES(p_firstName, p_middleName, p_lastName, p_address, p_City, p_State, p_ZIP);
    END;
    //
    
    DELIMITER ;
    

    为什么你需要这个是explained in the documentation:

    如果使用mysql客户端程序定义一个包含分号字符的存储程序,就会出现问题。默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符,以使mysql将整个存储的程序定义传递给服务器。

    要重新定义 mysql 分隔符,请使用delimiter 命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2013-07-10
      • 1970-01-01
      • 2012-06-15
      • 2013-01-22
      • 1970-01-01
      相关资源
      最近更新 更多