首页 > 解决方案 > MySQL存储过程语法问题

问题描述

我正在处理这个过程,但我不太熟悉在 MySQL 中编写存储过程,当我尝试创建存储过程时,如图所示,它一直告诉我第 9 行的语法不正确

DELIMITER//

CREATE PROCEDURE InsertUser (
IN new_USER_ID              BIGINT,
IN new_USER_NAME            VARCHAR(36),
IN new_ENCRYTED_PASSWORD    VARCHAR(128),
IN new_ENABLED              BIT,
IN select_Role_ID           BIGINT)
BEGIN
DECLARE user_role_id BIGINT
SET user_role_id = (SELECT max(id) from USER_ROLE);

Insert into App_User(USER_ID, USER_NAME, ENCRYTED_PASSWORD, ENABLED) 
        values(new_USER_ID, new_USER_NAME, new_ENCRYTED_PASSWORD, new_ENABLED);

INSERT INTO USER_ROLE(ID, USER_ID, ROLE_ID) 
        values(user_role_id+1, new_USER_ID, select_Role_ID);
END;//
DELIMITER;

有人可以告诉我正确的语法应该是怎样的吗?

标签: mysqlstored-proceduresmysql-workbench

解决方案


下面是正确的使用方法delimiter。见mysql 文档

DELIMITER //
CREATE PROCEDURE InsertUser (
IN new_USER_ID              BIGINT,
IN new_USER_NAME            VARCHAR(36),
IN new_ENCRYTED_PASSWORD    VARCHAR(128),
IN new_ENABLED              BIT,
IN select_Role_ID           BIGINT)
BEGIN
   Insert into App_User(USER_ID, USER_NAME, ENCRYTED_PASSWORD, ENABLED) 
        values(new_USER_ID, new_USER_NAME, new_ENCRYTED_PASSWORD, new_ENABLED);

  INSERT INTO USER_ROLE(ID, USER_ID, ROLE_ID) 
          values(user_role_id+1, new_USER_ID, select_Role_ID);
END //

DELIMITER ;

推荐阅读