存储过程和函数:类似于java中的方法
好处:
1、提高代码的重用性
2、简化操作
存储过程:
含义:一组预先编译好的sql语句的集合,理解成批处理语句
1、提高代码的重用性
2、简化操作
3、减少编译次数并且减少了和数据库服务器的连接次数,提高了效率
一,创建语法
create procedure 存储过程名(参数列表)
Begin
存储过程体(一组合法的sql语句)
end
注意:
1、参数列表包含三个部分:参数模式 参数名 参数类型
举例:
in stuname VARCHAR(20)
参数模式:
in: 该参数可以作为输入,也就是该参数需要调用方法传值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
2、如果存储过程体仅仅只有一句话,Begin end 可以省略
存储过程体中的每条sql语句的结尾要求必须加分号
且存储过程的结尾可以使用 DELIMITER重新设置
语法:
DELIMITER 结束标记 结束标记可以按自己喜好
案列:
DELIMITER $
create procedure 存储过程名(参数列表)
Begin
存储过程体(一组合法的sql语句)
end $
二、调用语法
CALL 存储过程名(实参列表);
实机展示
习题1:在course表中加入一门新学科课程号07007,课程名称线性代数
原表格:
代码:
delimiter $
create procedure Tjkc1()
begin
insert into course(课程号,课程名称)
value('07007','线性代数');
end $
调用:
call Tjkc1()
结果:
习题2:定义存储过程求1!+2!+3!+…n!并输出(n为参数)
delimiter $
CREATE PROCEDURE jcqh4 ( IN n INT ) BEGIN
DECLARE i INT DEFAULT 1;
DECLARE j INT DEFAULT 1;
DECLARE fac INT DEFAULT 1;
DECLARE sum_fac INT DEFAULT 0;
WHILE i <= n DO
SET fac = 1;
set j=1;
WHILE j <= i do
SET fac = fac * j;
set j=j+1;
end while;
SET sum_fac= sum_fac + fac;
SET i =i + 1;
end while;
select sum_fac as 结果;
END $
调用:
call jcqh4(5);
结果:
注意:
存储过程只要运行成功了,如果你还需要编辑,你只有两个选择,
1.换一个存储过程名
2.删除存储过程
删除存储过程
语法:drop procedure 存储过程名
drop procedure p1;
每次只能删除一个
查看存储过程的信息
show create procedure jcqh4;
需要上面库文件的可以私信,或者评论区。