MySQL存储过程


一、定义及优缺点

存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

优点:1. 执行效率高(因为预编译过);2. 通过其名称直接调用,减少网络通讯;3. 安全性高(需要一定的用户权限);4. 可重复使用。

缺点:1. 可移植性差(不同数据库语法不一致);2. 过程化编程,复杂业务处理的维护成本高;3. 调试不便。

二、使用

1.关键语法及操作

声明语句结束符:

delimiter $$  #将语句的结束符从;临时改为$$,$$可自定义

声明存储过程:

create procedure 存储过程名([参数])
begin
    ......
end
#以begin开始到end结束这段叫存储过程体,可嵌套

变量赋值:

set 变量名 = 表达式
set @x = 1   #一般以@开头的是用户变量

变量定义:
局部变量的声明一定要放在存储过程体的开始。

declare y int unsigned default 1000;

调用存储过程:

call 存储过程名([参数]);

查询存储过程:

select 'name' from mysql.proc where db='数据库名';
或者
select * from information_schema.routines where routine_schema='数据库名';
或者
show procedure status where db='数据库名';
或者想查看某个存储过程的详细:
show create procedure 数据库.存储过程名;

删除存储过程:

drop procedure 存储过程名;

2.实例

从表user1中删除指定id的用户信息:

delimiter //
create procedure delete_user(in uid integer)
begin
    delete from user1
    where id = uid;
end//

写完之后记得把结束符改回分号:delimiter ;

注意:确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理;

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


总结

过程中遇到问题收集到的解决方案:
1. mysql存储过程中in、out、inout参数使用实际案例 - 徐守威 - CSDN博客
2. 存储过程中的变量定义 - GeaoZhang - 博客园
3. table ‘mysql.proc’ doesn’t exist问题解决 - liuyinfei_java - CSDN博客
4. mysql查看存储过程 - 金虹巴巴 - 博客园
5. mysql存储过程学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值