存储过程
一:什么是存储过程?
- 存储过程是一种在数据库中一组特定SQL语句的语句集。
- 一次编译,永久有效。
- 将一些复杂,重复的SQL语句封装起来,以后多次执行。
- 类似于java中的方法,一组预先编译好的sql语句的集合理解成批量处理语句。
- 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
二:MySQL定义存储过程
2.1创建的语法
create procedure 存储过程名(参数列表)
begin -- 表示着开始
存储过程体(一组合法的SQL语句)
end -- 表示着结束
-
注意点:如果带有参数列表的话
1.参数列表中将包含三部分:
参数模式 参数名 参数类型 -
参数模式:
in:代表该参数可以作为输入,也就是说该参数需要调用方传入值。
out:代表该参数可以作为输出,也就是说该参数可以作为返回值。
inout:代表该参数既可以作为输入,也可以作为输出,也就是该参数既需要传入参数,也可以返回。 -
如果begin end中只有一条sql语句,可以省略begin end。
-
存储过程体中的每条SQL语句的结尾要求必须要加分号。
2.2调用的语法
-- 调用语法:
call 存储过程名(实参列表);
2.3存储过程实际案例:
-- 创建: 无参
delimiter $
create procedure myp1()
begin
insert into admin(username,`password`)
values('join',0001),
values('jack',0002),
values('zhangsan',0003),
values('zhaoliu',0004),
values('wangwu',0005);
end $
-- 调用
call myp1()$
-- 删除
drop procedure myp1;
三:Oracle存储过程
3.1创建的语法
-- 创建存储过程
create procedure add_dog( -- 方法名
p_did number, -- 参数1
p_dname varchar2, --参数2 后面不能接具体长度 不能写varchar2(20) 类似的
p_dage number -- 最后一个参数不需要使用逗号
)
is
begin
-- 方法体
end add_dog; -- 代表结束
- 注意点:
- 参数后面不能接具体长度 不能写varchar2(20) 类似的.
- 最后一个参数不需要使用逗号。
3.2 调用存储过程
-- 调用
begin
add_dog(111,'张三',30);
end;
3.3存储过程实际案例
-- 创建存储过程
create procedure add_dog(
p_did number,
p_dname varchar2,
p_dage number
)
is
begin
-- 方法体
insert into dog values(p_did,p_dname,p_dage);
end add_dog;
-- 删除存储过程
drop procedure add_dog;
-- 调用
begin
add_dog(111,'张三',30);
end;
Oracle带参存储过程
create procedure up_sel_dog(
p_did number,
p_dname varchar2,
p_dage number,
p_result out varchar2 -- out 代表是返回值
)
is
begin
update dog set dname = p_dname , dage = p_dage where did = p_did;
select dname into p_result from dog where did = p_did;
end up_sel_dog;
drop procedure up_sel_dog;
-- 调用
declare
v_result varchar2(20);
begin
up_sel_dog(111,'小四',70,v_result);
dbms_output.put_line(v_result);
end;