mysql存储过程

本文详细介绍了MySQL存储过程的概念,包括其定义、特点和创建、调用、删除的语法。存储过程增强了SQL的编程能力,提高了代码复用性和执行效率,减少了网络传输。此外,还展示了如何声明变量、设置参数以及处理异常。示例中演示了存储过程的创建、调用和删除,以及如何在存储过程中声明和使用变量。
摘要由CSDN通过智能技术生成

定义

  • 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集。
  • 经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
  • 类似于java中的方法,sql的封装和重用,有输入输出参数,可以声明变量,有流程控制if/else/case/while等语句,可以实现复杂的逻辑功能

特点

1.能完成较复杂的判断和运算
2.可编程行强,灵活
3.SQL编程的代码可重复使用
4.执行的速度相对快一些
5.减少网络之间的数据传输,节省开销

创建存储过程

create procedure procedure_name()
begin
.........
end

调用存储过程

call procedure_name();

删除存储过程

drop procedure procedure_name

简单存储过程实例

create procedure simple_procedure()
begin
	select * from user;
	select * from apply_info;
end;

call simple_procedure();

drop procedure simple_procedure;

声明变量

1.变量的声明使用declare,一句declare只声明一个变量,变量必须先声明后使用;
2.变量具有数据类型和长度,与mysql的SQL数据类型保持一致,因此甚至还能制定默认值、字符集和排序规则等;
3.变量可以通过set来赋值,也可以通过select into的方式赋值;
4.变量需要返回,可以使用select语句,如:select 变量名。
5.存储过程中变量是有作用域的,作用范围在begin和end块之间,end结束变量的作用范围即结束。

create procedure declare_procedure()
begin
	-- 使用 declare语句声明一个变量
  declare username varchar(32) default '';
	-- 使用set语句给变量赋值
  set username='dalao';
	-- 将users表中id=1的名称赋值给username
	select ifnull(name,'dalao') into username from user where id=1;
	select username;
end;

存储过程参数

1.传入参数,类型为IN,默认就是IN类型
2.返回值,类型OUT
3.如果既需要传入,同时又需要传出,则可以使用INOUT类型参数

create procedure 名称([IN|OUT|INOUT] 参数名 参数数据类型 )
begin
.........
end
create procedure para_procedure(IN userid int,OUT username varchar(32))
begin
	select ifnull(name,'dalao') into username from user where id=userid;
end;

SET @username='';
call para_procedure(1,@username);
SELECT @username as name;

声明异常处理

语法
处理类型:继续CONTINUE,退出EXIT
触发条件:SQLSTATE,MYSQL ERROR,CONDITION
1.MYSQL错误代码
2.ANSI-standard SQLSTATE code
3.命名条件。可使用系统内置的SQLEXCEPTION,SQLWARNING和NOT FOUND
错误触发的操作:actions

DECLARE
{EXIT | CONTINUE}
HANDLER FOR
{error-number | SQLSTATE error-string | condition}
SQL statement

实例

sql报错,设置返回值

CREATE DEFINER=`root`@`%` PROCEDURE `test`(OUT a_success varchar(1), OUT a_message longtext)
begin

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
        SET A_MESSAGE = '执行错误';

end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大佬腿好粗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值