MySQL数据库——存储过程

news/2024/10/28 21:19:37/

MySQL数据库——存储过程

  • 一、MySQL存储过程概念
  • 二、存储过程
      • 1.创建存储过程
      • 2.调用存储过程
      • 3.查看存储过程
      • 4.存储过程的参数
      • 5.删除存储过程
  • 三、存储过程的控制语句
      • 1.条件语句if-then-else ···· end if
      • 2.循环语句while ···· end while

一、MySQL存储过程概念

存储过程是一组为了完成特定功能的SQL语句集合。
存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高

存储过程的优点:

  1. 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
  2. SQL语句加上控制语句的集合,灵活性高
  3. 在服务器端存储,客户端调用时,降低网络负载
  4. 可多次重复被调用,可随时修改,不影响客户端调用
  5. 可完成所有的数据库操作,也可控制数据库的信息访问权限

二、存储过程

1.创建存储过程

DELIMITER $$							#将语句的结束符号从分号;临时改为两个$$(可以是自定义)
CREATE PROCEDURE Proc()					#创建存储过程,过程名为Proc,不带参数
-> BEGIN								#过程体以关键字 BEGIN 开始
-> select * from ztm_001;			    #过程体语句
-> END $$								#过程体以关键字 END 结束
DELIMITER ;								#将语句的结束符号恢复为分号

在这里插入图片描述

2.调用存储过程

CALL Proc;

在这里插入图片描述

3.查看存储过程

SHOW CREATE PROCEDURE [数据库.]存储过程名;		#查看某个存储过程的具体信息SHOW CREATE PROCEDURE Proc;SHOW PROCEDURE STATUS [LIKE '%Proc%'] \G

在这里插入图片描述

4.存储过程的参数

INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)DELIMITER $$				
CREATE PROCEDURE Proc1(IN inname CHAR(16))		
-> BEGIN					
-> SELECT * FROM ztm_001 WHERE id = 3;
-> END $$					
DELIMITER ;					CALL Proc1('Boston');

在这里插入图片描述

OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)delimiter $$
mysql> create procedure proc5(in myname char(10), out outname int)-> begin-> select sales into outname from ztm_001 where name = '张三';-> end $$
delimiter ;
call proc3('yzh', @out_sales);
select @out_sales;
INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)delimiter $$
mysql> create procedure proc4(inout insales int)-> begin-> select count(sales) into insales from t1 where sales < insales;-> end $$
delimiter ;
set @inout_sales=1000;
call proc4(@inout_sales);
select @inout_sales;

5.删除存储过程

存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。如果要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。

DROP PROCEDURE IF EXISTS Proc;
仅当存在时删除,不添加 IF EXISTS 时,如果指定的过程不存在,则产生一个错误

在这里插入图片描述

三、存储过程的控制语句

create table t (id int(10));
insert into t values(10);

1.条件语句if-then-else ···· end if

DELIMITER $$  
CREATE PROCEDURE proc2(IN pro int)  
-> begin 
-> declare var int;  
-> set var=pro*2;   
-> if var>=10 then               
-> update t set id=id+1;  
-> else 
-> update t set id=id-1;  
-> end if;  
-> end $$DELIMITER ;CALL Proc2(6);

在这里插入图片描述

2.循环语句while ···· end while

DELIMITER $$  
CREATE PROCEDURE proc3()
-> begin 
-> declare var int(10);  
-> set var=0;  
-> while var<6 do  
-> insert into t values(var);  
-> set var=var+1;  
-> end while;  
-> end $$  DELIMITER ;CALL Proc3;

在这里插入图片描述


http://www.ppmy.cn/news/629287.html

相关文章

VBA快速入门学习笔记

NOTE 1&#xff1a; 一、VBA对象 工作簿、工作表、单元格、批注、透视表、自选图形、名称等等都是对象&#xff0c;VBA正是用于处理这些对象的语言。下图是一个比较经典的VBA对象类别图。在VBE&#xff08;VB编辑器&#xff09;里也可以看到对象的浏览器&#xff08;F2键&…

魔改合成大西瓜,从源码到部署,步骤详细

现在有一款火爆全网的小游戏《合成大西瓜》&#xff0c;据官方数据显示&#xff0c;目前参与合成西瓜的游玩人次已经多达六千多万&#xff0c;可见广大网友已经不仅仅满足于在娱乐圈吃瓜了&#xff0c;现在更喜欢自己创造大西瓜&#xff0c;哈哈哈。 前一段时间看朋友圈里有好…

计算机应用基础月考,《计算机应用基础》月考试题二.doc

《计算机应用基础》月考试题二.doc (4页) 本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01; 7.9 积分 &#xfeff;《计算机应用基础》月考试题二选择题&#xff1a;(1-20题每题1分&#xff0c;21-60题…

计算机应用专科答案,国家开放大学电大考试《计算机应用基础》(专科)作业及答案.doc...

国家开放大学电大考试《计算机应用基础》(专科)作业及答案.doc 文档编号&#xff1a;1587742 文档页数&#xff1a;15 上传时间&#xff1a; 2021-06-22 文档级别&#xff1a;普通资源 文档类型&#xff1a;doc 文档大小&#xff1a;76.00KB 计算机应用基础专科平时作业答案计算…

Linux实操篇

vi和vim编辑器 vi:Linux系统会内置vi文本编辑器 vim&#xff1a;具有程序编辑的能力&#xff0c;可以看做vi的增强版本&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。 vi和vim的三种模式 1、正常模式 以vim直接打开文件进入一般模式也叫默认…

Linux文件目录类(常用指令)

文件目录类 cd指令 基本语法:cd [参数] (功能描述:切换到指定目录) cd ~或者cd :回到自己的家目录 cd.. 回到当前目录的上一目录 绝对路径和相对路径 绝对路径&#xff1a;目标文件在硬盘上的真实路径&#xff08;最精确路径&#xff0c;从根目录开始的。&#xff09; 相对…

Linux总结篇 linux命令 虚拟机 - (二)

cd 作用:切换目录 语法&#xff1a;cd [相对路径/绝对路径] 命令含义cd切换到当前用户的主目录(/home/用户目录)&#xff0c;用户登录的时候&#xff0c;默认的目录就是用户的主目录。cd ~切换到当前用户的主目录(/home/用户目录)cd ..切换到上级目录cd -可进入上次所在的目…

YADR - 你见过的最好的 vim、git、zsh 插件和最干净的 vimrc

​ sh -c "curl -fsSL https://raw.githubusercontent.com/skwp/dotfiles/master/install.sh "​ 始终确保rake update在拉取后运行以确保插件更新 什么是 YADR&#xff1f; YADR 是一个固执的 dotfile 存储库&#xff0c;它会让你的心在歌唱 所有顶级 dotfile 存…