存储过程!

存储过程

一:什么是存储过程?

  • 存储过程是一种在数据库中一组特定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;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值