数据库存储过程

存储过程:

是一组为了完成特定功能的sql语句的集合。类似于函数。
写好了一个存储过程之后,我们可以像函数一样随时调用sql的集合。

复杂的,需要很多sql语句联合执行完成的任务。
存储过程在执行上比sql语句的执行速度要快,效率也更高。

创建存储过程:

delimiter $$
create procedure proc ()
begin 
select * from info12;
end $$
delimiter;

delimiter $$(将语句的结束符号从分号,临时改变成两个$$)
create procedure proc ()
创建存储过程proc,不能重复,在当前库中唯一。()里面不定义任何方法。
BEGIN    (过程体开始的关键字)
select * from info;(begin后面跟上的是需要执行的sql语句。)
end $$     (整个语句结束,和上面的定义开始符号一一对应)
delimiter;    (将结束符号恢复成分号)

delimiter的作用保证整个存储过程的中的sql语句能够被完整的执行。否则可能在前面的SQL语句结束运行。

SHOW CREATE PROCEDURE Proc;查看

SHOW CREATE PROCEDURE Proc\G

show procedure status where db='kgc';
show procedure status like '%proc%';查看全库
call proc;调用

drop procedure if exists proc;删除

存储过程的参数运用

1、in输入参数,调用者向存储过程传入值
2、out输出参数,表示存储过程向调用者传出值。(可以返回多个值)
3、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 ;

存储过程的控制语句 

 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 ;

while循环条件语句 

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 ;

注意点:使用存储过程中,在内部变量不需要加@,外部使用和复制要加@,引用变量
              在存储过程begin之后声明变量:declare a INT;declare i INT;声明变量要加数据类 
              型。
               要想使用存储过程里面的结果,必须要out才能传出参数。在声明存储变量是,要 
               定义好参数的传参方式in out INOUT。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值