三十五、存储过程的基本使用

简介: 三十五、存储过程的基本使用

一、什么是存储过程

存储过程是为了完成特定功能的 SQL 语句集,经过编译创建并保存在数据库中,用户可以通过指定存储过程的名字并给定参数来调用执行,类似于编程语言中的方法或函数。


1.1 存储过程的优点

  1. 存储过程是对 SQL 语句的封装,增强可复用性;
  2. 存储过程可以隐藏复杂的业务逻辑和商业逻辑;
  3. 存储过程支持接受参数,并返回运算结果。

1.2 存储过程的缺点

  1. 存储过程的可以执行差,如果更换数据库要重新存储过程;
  2. 存储过程难以调试和扩展;
  3. 无法使用 Explain 对存储过程进行分析。


存储过程的语法如下:

[delimiter 声明语句结束符]
create procedure 存储过程名称([存储过程参数])
begin
    sql 逻辑
end
[声明语句结束符]
[delimiter ;]
  1. 声明语句结束符一般用于sql 逻辑中如果有 ; 为结尾的sql语句,那么就需要使用delimiter 定义声明语句结束符。这样 MySQL 才能正确的找到存储过程正确的结束位置。
  2. 存储过程参数可以没有,如果存储过程需要返回值,那么就需要定义出参,如果存储过程需要从外部获得值就需要定义入参。


例如:

1.定义一个存储过程,计算两个数的和:

delimiter //
create procedure num_sum(in num1 int, in num2 int ,out result int)
begin
    set result=num1+num2;
end
//
delimiter ;

在这个存储过程中入参为 num1 和 num2 表示,需要在参数名前面加上 in 表示入参,参数名后面是参数类型。result 是出参,需要在参数名前面加上 out。调用这个存储过程使用 call 关键字:

call num_sum(10,20,@result);
select @result;

如果存储过程里需要定义变量,可使用 declare 关键字定义,个变量赋值使用 set 关键字:

delimiter //
create procedure num_sum_add2(in num1 int, in num2 int ,out result int)
begin
    declare n int ;
    set n=num1+num2;
    set result=n+2;
end
//
delimiter ;
目录
相关文章
|
6月前
|
存储 关系型数据库 MySQL
Mysql基础第二十六天,使用存储过程
Mysql基础第二十六天,使用存储过程
48 0
Mysql基础第二十六天,使用存储过程
|
5月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
6月前
|
存储 SQL Oracle
Oracle存储过程与自定义函数的调用:异同与实战场景
【4月更文挑战第19天】Oracle的存储过程与自定义函数各有特色,存储过程用于封装复杂SQL操作,常在批量处理和数据维护中使用,通过CALL或EXECUTE调用;而自定义函数则用于简单计算和查询,返回单一值,可直接在SQL语句中调用。了解两者异同,如返回值方式、调用方式和应用场景,能提升数据库管理效率。实战场景包括:使用存储过程定期清理过期数据,用自定义函数在查询中动态计算字段值。
|
6月前
|
存储 SQL 数据库
十六、存储过程
十六、存储过程
56 0
|
6月前
|
存储 SQL 安全
探秘MSSQL存储过程:存储过程的高级特性和实战技巧
探秘MSSQL存储过程:存储过程的高级特性和实战技巧
|
存储 SQL 算法
MySQL高级第一篇(共四篇)之索引、视图、存储过程和函数、触发器
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :
291 0
|
存储 SQL NoSQL
MySQL数据库,从入门到精通:第十五篇——MySQL存储过程和函数详解
MySQL数据库,从入门到精通:第十五篇——MySQL存储过程和函数详解
287 0
WebApi入门第十一章(定时器作用及语法)
WebApi入门第十一章(定时器作用及语法)
278 0
WebApi入门第十一章(定时器作用及语法)
|
存储
三十六、存储过程小练
三十六、存储过程小练
63 0
|
存储 监控
三十八、触发器实战
三十八、触发器实战
99 0