mysql之存储过程

 内容预知

 1.mysql存储过程的相关知识

 1.1 存储过程的概念

1.2 存储过程的优点

 2.存储过程的管理

 2.1 创建存储过程

 2.2 调用存储过程 

2.3 查看存储过程 

2.4 存储过程的修改和删除 

 2.5 存储过程的正常使用

 3.存储过程的参数运用

(1)传入参数的存储过程 

(2) 传出参数的存储过程(out)

(3)输入输出参数(inout) 

4.存储过程的控制语句 

 4.1 if条件判断语句

4.2 while循环条件语句 


 1.mysql存储过程的相关知识

 1.1 存储过程的概念

存储过程是一组为了完成特定功能的SQL语句集合。类似于于其他编程语言中的函数,定义一个函数方法,可以随时起到传参调用的功能。

存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

1.2 存储过程的优点

  • 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率。
  • SQL语句加上控制语句的集合,灵活性高。
  • 在服务器端存储,客户端调用时,降低网络负载。
  • 可多次重复被调用,可随时修改,不影响客户端调用。
  • 可完成所有的数据库操作,也可控制数据库的信息访问权限。

 2.存储过程的管理

 2.1 创建存储过程

基本格式: 

 ##创建存储过程:
 DELIMITER $$                  #将语句的结束符号从分号;临时改为两个$$ (可以是自定义)
 CREATE PROCEDURE Proc ()      #创建存储过程,过程名为Proc,不带参数
 -> BEGIN                      #过程体以关键字BEGIN开始
 -> select * from store_info;  #过程体语句
 -> END $$                     #过程体以关键字END结束
 ​
 DELIMITER;                    #将语句的结束符号恢复为分号

 

 2.2 调用存储过程 

 格式: call 存储过程名称

call proc1;

 

2.3 查看存储过程 

 SHOW CREATE PROCEDURE [数据库.]存储过程名;  #查看某个存储过程的具体信息​
 SHOW CREATE PROCEDURE Proc;
 SHOW CREATE PROCEDURE Proc\G

 

 

查看全库的存储过程 :

show  procedure status  like '%proc%';
show  procedure status  like '%proc%'\G;

2.4 存储过程的修改和删除 

 #存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。
 DROP PROCEDURE IF EXISTS 存储过程名;
 #仅当存在时删除,不添加If EXISTS 时,如果指定的过程不存在,则产生一个错误。

 

 2.5 存储过程的正常使用

mysql> delimiter $$
mysql> create procedure proc2 ()
    -> begin
    -> insert into info2 values('小白','running','2002-7-11');
    -> select * from info2 ;
    -> delete from info2 where name='小刚';
    -> end $$
mysql> delimiter ;
mysql> call proc2;

 

 3.存储过程的参数运用

  • IN 输入参数: 表示调用者向过程传入值。(传入值可以是字面量或变量)
  • OUT 输出参数: 表示过程向调用者传出值。(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数: 既表示调用者向过程传入值,又表示过程向调用者传出值。(值只能是变量)

(1)传入参数的存储过程 

创建传参的存储过程 :

mysql> delimiter $$
mysql> create procedure proc3 (in uname char(20))
    -> begin
    -> select * from student where name=uname;
    -> delete from student where name=uname;
    -> select * from student;
    -> end $$


mysql> delimiter ;

 注意:变量名不能含有下划线。

 

调用传参的存储过程 :

 call proc3 ('张三');

(2) 传出参数的存储过程(out)

只接受变量的调用,不接受直接传入的值 

mysql> delimiter $$
mysql> create procedure test(out num int)
    -> begin
    -> set num=100;
    -> end $$


mysql> delimiter ;

执行结果:

 

(3)输入输出参数(inout) 

mysql> create procedure proc5 (inout a int)  
    -> begin
    -> select a;
    -> set a=a+10;
    -> select a;
    -> end $$

delimiter ;

 

执行结果:

 

 

 

4.存储过程的控制语句 

 4.1 if条件判断语句

 

mysql> delimiter $$
mysql> create procedure test2(in num int)
    -> begin
    -> if num >=10 then
    -> set num=num-5;
    -> else 
    -> set num=num*2;
    -> end if;
    -> select num;
    -> end $$


mysql> delimiter ;

执行结果:

 

 

4.2 while循环条件语句 

注意:

decalre -i var 声明变量var为整数型( 即增加整型属性)。

decalre +i var 删除变量var的整型属性。

 

mysql> delimiter $$                                                                                                       
mysql> create procedure test3 ()
    -> begin
    -> declare a int;
    -> declare i int;
    -> set a=10;
    -> set i=1;
    -> while i<=10 do
    -> set a=a+10;
    -> set i=i+1;
    -> end while ;
    -> select a;
    -> end $$

mysql> delimiter ;

 

 

 

执行结果:

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值