十六、存储过程

简介: 十六、存储过程

存储过程

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

当要执行者一段代码的时候,可以通过调用该存储过程来实现.
在封装的语句体里面,可以用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$
目录
相关文章
|
6月前
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
130 0
|
7月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
90 3
|
7月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
8月前
|
缓存 Java 数据库连接
MyBatis Plus的“幻查” 规范到底要怎样使用哪几个查询函数 为什么会出现幻查?还有幻删为什么会删不掉
MyBatis Plus的“幻查” 规范到底要怎样使用哪几个查询函数 为什么会出现幻查?还有幻删为什么会删不掉
|
存储 SQL 算法
MySQL高级第一篇(共四篇)之索引、视图、存储过程和函数、触发器
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :
316 0
|
存储 SQL 关系型数据库
Mysql数据库基础第六章:变量、存储过程与函数
在mysql中,可以使用变量来存储查询或计算结果,类似python中的变量。在mysql中主要分为:系统变量和自定义变量
|
存储 SQL 关系型数据库
三十五、存储过程的基本使用
三十五、存储过程的基本使用
144 0
|
JavaScript Android开发
第二十三章:触发器和行为(十一)
单选按钮内置于旧汽车仪表板中的无线电通常具有一排六个(左右)按钮,可以为各种无线电台“编程”。 按下其中一个按钮会导致无线电跳转到该预选电台,并且还会弹出前一个选择按钮。那些旧的汽车收音机现在是古董,但我们的电脑屏幕上的互斥选项仍然由我们称为单选按钮的视觉对象表示。
917 0