这个存储过程代码的问题是什么?

时间:2017-07-01 19:38:35

标签: mysql

以下代码提供了许多与分号相关的错误。我是MySql的新手,所以很无聊。

CREATE PROCEDURE `sp_get_orderbystatus`(p_status_id int)

BEGIN
declare v int;
if(p_status_id = 1) then
begin
    set v = 1;
end;
end if;

END

2 个答案:

答案 0 :(得分:1)

如果您尝试在DELIMITER cli中执行此操作,则需要更改mysql

DELIMITER // -- change the delimiter to '//' 

CREATE PROCEDURE `sp_get_orderbystatus`(p_status_id int)
    DECLARE v INT;
    -- the rest of the code of your procedure
END//

DELIMITER ; -- change it back to ';'
  

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

答案 1 :(得分:1)

尝试: 分隔符// 你的程序在这里 END //

分隔符;