普通的存储过程

需求

定义一个存储过程,查询所有老师的数据

DELIMITER !

CREATE PROCEDURE p1()
BEGIN 
	SELECT * FROM teacher;
END !

DELIMITER ;

CALL p1();

带in参数的存储过程

需求

根据提供的id查询对应老师的数据

DELIMITER !

CREATE PROCEDURE p2(IN teacherid INT)
BEGIN 
	SELECT * FROM teacher WHERE id = teacherid;
END !

DELIMITER ;

CALL p2(1);

带out参数的存储过程

提供一个老师id给存储过程 需要返回老师的名字 当我们拿到返回的名字时 再进行一个输出

DELIMITER !

CREATE PROCEDURE p3(IN teacherid INT, OUT teachername VARCHAR(11))
BEGIN 
	SELECT NAME INTO teachername FROM teacher WHERE id = teacherid;
END !

DELIMITER ;

CALL p3(2,@myteacher);
SELECT @myteacher;

inout类型的参数

需求 接收一个数字 返回它的100倍

DELIMITER !

CREATE PROCEDURE p4(INOUT num INT)
BEGIN 
	SET num = num * 100;
	
END !

DELIMITER ;

SET @mynum = 5;
CALL p4(@mynum);
SELECT @mynum;