存储过程格式
CREATE PROCEDURE 存储过程名称(参数模式 参数名 参数类型)
BEGIN
存储过程体
END
参数模式有三种,
-
IN:该参数可以作为输入,也就是该参数需要调用方传入值
-
OUT:该参数可以作为输出,也就是该参数可以作为返回值
-
INOUT:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
注意事项:
如果存储过程体只有一句话,begin end可以省略。
存储过程体中的每条sql语句的结尾要求 必须 加分号。
delimiter问题
在Mysql中,因为存储过程中的SQL语句必须以分号结尾,而mysql的cmd窗口在遇到sql语句加分号时,会直接执行语句,而发送冲突导致存储过程创建失败。
因此我们要修改存储过程的结束符,让mysql可以识别。
示例如下,注意的是 DELIMITER 和 $符号之间 必须要有空格
END 和 $符号之间 不能有空格
并且在结束时,要将结束符修改回来,一样要有空格。
DELIMITER $
CREATE PROCEDURE LOGIN_YZ(INOUT a INT,INOUT b INT)
BEGIN
SET a = 2;
SET b = b*2;
END$
DELIMITER ;