SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。
过程体的开始与结束使用BEGIN与END进行标识。
存储过程分为有参和无参
DELIMITER ;; CREATE PROCEDURE `select_students_count`() BEGIN SELECT count(id) from students; END;; DELIMITER ; call select_students_count();
MySQL支持IN(传递给存储过程),OUT(从存储过程传出)和INOUT(对存储过程传入和传出)类型的参数。存储过程的代码位于BEGIN和END语句内,如前所见,它们是一系列SELECT语句,用来检索值,然后保存到相应的变量(通过指定INTO关键字)
存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT
IN:仅带入参的存储过程
参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
DELIMITER // CREATE PROCEDURE in_param(IN p_in int) BEGIN SELECT p_in; SET p_in=2; SELECT p_in; END// DELIMITER ; #调用 SET @p_in=1; CALL in_param(@p_in); SELECT @p_in;
结果:
OUT:仅带出参的存储过程
该值可在存储过程内部被改变,并可返回
#存储过程OUT参数 DELIMITER // CREATE PROCEDURE out_param(OUT p_out int) BEGIN SELECT p_out; SET p_out=2; SELECT p_out; END// DELIMITER ; #调用 SET @p_out=1; CALL out_param(@p_out); SELECT @p_out;
结果:
INOUT:带入参和出参的存储过程
调用时指定,并且可被改变和返回
#存储过程INOUT参数 DELIMITER // CREATE PROCEDURE inout_param(INOUT p_inout int) BEGIN SELECT p_inout; SET p_inout=2; SELECT p_inout; END// DELIMITER ; #调用 SET @p_inout=1; CALL inout_param(@p_inout) ; SELECT @p_inout;
结果:
(C) 房上的猫 。 保留所有权利。
https://www.cnblogs.com/lsy131479/
如需转载,请注明出处!!!
如对本文有疑问, 点击进行留言回复!!
网友评论