【图文解析 】MySQL之存储程序是什么B玩意

存储程序

1.什么是存储程序

  • 存储程序指的一组存储和执行在数据库服务器端的程序。存储程序总是在服务器的进程或者线程的内存中执行的。
  • 优点:
    • 简化sql开发
    • 效率提高
  • 缺点:
    • 数据迁移麻烦
    • 占用服务器资源
    • 对数据库影响较大

2.[存储]过程

  • 有输入和输出参数,存储一组sql操作,独立调用。

#声明

delimiter //;

create procedure pro_emp()

begin

  select * from emp;

end;

//

 

#调用

call pro_emp();

 

delimiter //;

create procedure pro_emp_no(eno int)

begin

  select ename from emp where empno=eno;

end;

 

call pro_emp_no(7369);

 

参数三种模式:

  IN:输入模式(默认)

  OUT:输出模式

  INOUT:输入输出模式

elimiter //;

create procedure sel_emp(eno int,out en varchar(20))

begin

   select ename into en from emp where empno = eno;

end;

 

#调用

call sel_emp(7788,@name);

select @name;

 

#根据员工姓名查询职位

delimiter //;

create procedure sel_emp2(inout en_job varchar(20))

begin

  select job into en_job from emp where ename = en_job;

end;

#调用

set @name_job='scott';

call sel_emp2(@name_job);

select @name_job;

 

分支:  if

  delimiter //;

create procedure score(score int,out level varchar(20))

begin

 if score>=80 then

   set level='A';

 elseif score>=60 then

   set level ='B';

 else

   set level = 'C';

 end if;   

end;

循环:

#while  1+2+...+10

 delimiter //;

 create procedure calc1()

 begin

          #声明变量

          declare i int;

          declare sum int;

          #赋值

          set i=1;

          set sum=0;

          #循环

          while i<=10 do

            set sum=sum+i;

                    set i=i+1;

          end while;

          select sum;

 end;

 

call calc1();

 

 

#loop

delimiter //;

 create procedure calc2()

 begin

          #声明变量

          declare i int;

          declare sum int;

          #赋值

          set i=1;

          set sum=0;

          #循环

          lip:loop

            set sum = sum + i;

                    set i = i+1;

                    if i>10 then

                      leave lip;

                    end if;    

          end loop;

          select sum;

 end;

 

call calc2();

 

#repeat

delimiter //;

 create procedure calc3()

 begin

          #声明变量

          declare i int;

          declare sum int;

          #赋值

          set i=1;

          set sum=0;

          #循环

          repeat

            set sum = sum + i;

                    set i = i+1;

                    until i>10

          end repeat;

          select sum;

 end;

call calc3();

 

3.[存储]函数

  • 有返回值。

delimiter //;

create function sel_name(eno int)

returns varchar(20)  #返回值类型

DETERMINISTIC #确定的

begin

  declare v_name varchar(20);

  select ename into v_name from emp where empno = eno;

         return v_name;

end;

 

select sel_name(7788);

 

4.触发器

  • 由事件驱动(不能手动调用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值