十六、存储过程

简介: 十六、存储过程

存储过程

概念类似于函数,就是把一段代码封装起来.

当要执行者一段代码的时候,可以通过调用该存储过程来实现.
在封装的语句体里面,可以用if/else,case,while等控制结构.
可以进行SQL编程.
函数的普遍特性:模块化,封装,代码复用;
速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

存储过程弊端

不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;

不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务,其它的必要性不是很大;
...

定义

##查看存在的存储过程
mysql>show procedure status;

##删除存储过程
mysql>drop procedure 存储过程的名字

##操作

  1. 第一个存储过程,体会"封装sql"
delimiter $$
create procedure p1()
begin
    select * from s_emp;
end$$
  1. 调用存储过程
call p1()$$
  1. 第二个存储过程,体会"参数"
delimiter $
create procedure p2(n int)
begin
    select * from s_emp where id>n;
end$
  1. 第三个存储过程,体会"控制结构"
delimiter $
create procedure p3(n int,j char(1))
begin
    if j = 'h' then
  select * from s_emp where id>n;
    else
  select * from s_emp where id<n;
    end if;
end$
  1. 计算1->n的和
delimiter $
create procedure p4(n smallint)
begin
    declare i int;
    declare s int;
    set i = 1;
    set s = 0;
    while i<=n do
  set s = s + i;
  set  i= i + 1;
    end while;
    select s;
end$
目录
相关文章
|
4月前
|
人工智能 搜索推荐 测试技术
实战拆解 GEO:外贸 B2B 企业如何构建面向 AI 搜索的增长引擎
本文详解外贸B2B企业应对AI搜索变革的GEO(生成式引擎优化)方法论:从“争搜索排名”转向“进AI答案”,强调构建企业数字人格、基于客户问题生产可信内容、建设知识原子库、双模官网承载、CRM闭环转化,并指出常见误区与分层验证指标,助力企业系统化打造AI时代的增长基础设施。
560 1
|
10月前
|
存储 编解码 API
3步搞定!阿里云视频点播入门保姆级教程
本文是阿里云视频点播系列教程首篇,面向零基础用户,详细介绍从开通服务、上传视频、转码处理到播放器嵌入的完整流程,涵盖控制台操作与SDK开发,助你快速搭建音视频应用。
1961 1
3步搞定!阿里云视频点播入门保姆级教程
|
安全 网络协议 Java
log4j-CVE-2021-44228-vulhub复现
log4j-CVE-2021-44228-vulhub复现
1230 0
|
数据采集 自然语言处理 数据挖掘
【NLP-新闻文本分类】1 数据分析和探索
文章提供了新闻文本分类数据集的分析,包括数据预览、类型检查、缺失值分析、分布情况,指出了类别不均衡和句子长度差异等问题,并提出了预处理建议。
554 1
|
JavaScript
vue3 实现电子签名
vue3 实现电子签名
1481 1
GEE错误——‘xxx‘ did not match any bands.
GEE错误——‘xxx‘ did not match any bands.
2897 1
|
测试技术
你知道什么是UAT吗?
你知道什么是UAT吗?
7573 1
|
存储 缓存 JavaScript
基于AutoJs实现的薅羊毛App专业版源码大分享
基于AutoJs实现的薅羊毛App专业版源码大分享
799 0
|
消息中间件 NoSQL Java
基于springboot+Redis的前后端分离项目之消息队列(六)-【黑马点评】
在这里笔者想给大家分享一下课程内没有的思路,看看有没有小伙伴这么想,比如,我们可以不可以使用异步编排来做,或者说我开启N多线程,N多个线程,一个线程执行查询优惠卷,一个执行判断扣减库存,一个去创建订单等等,然后再统一做返回,这种做法和课程中有哪种好呢?答案是课程中的好,因为如果你采用我刚说的方式,如果访问的人很多,那么线程池中的线程可能一下子就被消耗完了,而且你使用上述方案,最大的特点在于,你觉得时效性会非常重要,但是你想想是吗?并不是,比如我只要确定他能做这件事,然后我后边慢慢做就可以了,我并不需要他一口气做完这件事,所以我们应当采用的是课程中,类似消息队列的方式来完成我们的需求。