MySQL存储过程语法麻烦

时间:2019-11-13 03:44:13

标签: mysql stored-procedures mysql-workbench

我正在处理此过程,但是我对在MySQL中编写存储过程不太熟悉,当我尝试按如下所示创建存储过程时,它总是告诉我第9行的语法不正确< / p>

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;

有人可以告诉我正确的语法是什么吗?

1 个答案:

答案 0 :(得分:0)

这是使用delimiter的正确方法。参见mysql documentation

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 ;