一、存储过程概念

使用SQL编写访问数据库的代码时,可用两种方法存储和执行这些代码,一种是在客户端存储代码,并创建向数据库服务器发送的SQL命令(或SQL语句),比如在C#、Java等客户端编程语言中嵌入访问数据库的SQL语句;另一种是将SQL语句存储在数据库服务器端(实际是存储在具体的数据库中,作为数据库的一个对象),然后由应用程序调用执行这些SQL语句。

这些存储在数据库服务器端供客户端调用执行的SQL语句就是存储过程,客户端应用程序可以直接调用并执行存储过程,存储过程的执行结果可返回给客户端。

存储过程可以:

接受输入参数并以输出参数的形式将多个值返回给调用者。

包含执行数据库操作的语句。

将查询语句执行结果返回到客户端内存中。

总之,存储过程实际是存储在数据库服务器上的、由SQL语句和流程控制语句组成的预编译集合,它以一个名字存储并作为一个单元处理,可由应用程序调用执行,允许包含控制流、逻辑以及对数据的查询等操作。存储过程可以接受输入参数,并可具有输出参数,还可以返回单个或多个结果集。

二、创建存储过程

create procedure 过程名字(参数列表)

begin

--过程体

end

简单实例:

三、查看存储过程

show procedure status [like'procedure_name'];

简单实例:

其中'\G'表示:以每组显示查询结果

查看创建语句:

show create procedure procedure_name;

四、调用存储过程

不能用select来访问存储过程:

调用存储过程应该用 call:

五、修改&删除存储过程

存储过程不能修改,只能删除后在添加

drop procedure 存储过程名;

六、存储过程参数

函数的参数需要数据类型指定,过程比函数更严格

过程还有自己的类型限定:

in:数据只是从外部传入给内部使用(值传递),可以是数值也可以是变量

out:只允许过程内部使用,只能传递变量,引用传递,外部的数据会被先清空才会进入到内部

inout:外部可以在内部使用,内部修改也可以在外部使用,引用传递,只能传递变量

in参数为值传递

out参数为引用传递,传递至过程中,会将传递参数的本身值清空

inout参数为引用传递

实例:

delimiter $$

create procedure pro2(in int_1 int,out int_2 int,inout int_3 int)

begin

-- 查看三个变量

select int_1,int_2,int_3;

end

$$

delimiter ;

delimiter $$

create procedure pro3(in int_1 int,out int_2 int,inout int_3 int)

begin

-- 查看三个局部变量;

select int_1,int_2,int_3;

-- 修改三个局部变量;

set int_1 = 10;

set int_2 = 100;

set int_3 = 1000;

-- 查看三个局部变量

select int_1,int_2,int_3;

-- 查看三个全局变量

select @int_1,@int_2,@int_3;

--修改三个全局变量

set @int_1 = 'a';

set @int_2 = 'b';

set @int_3 = 'c';

--查看三个全局变量

select @int_1,@int_2,@int_3;

end

$$

delimiter ;

七、跳出存储过程

怎么像return一样自如地跳出存储过程呢?

通过LEAVE实现。

DELIMITER $$

create PROCEDURE test4(IN char_1 CHAR,INOUT char_2 CHAR)

back:BEGIN

IF char_1 = 'c' THEN

SET char_2 = 'e';

LEAVE back;

END IF;

IF char_1 = 'a' THEN

SET char_2 = 'q';

LEAVE back;

END IF;

IF char_1 = 'a' THEN

set char_2 = 'r';

LEAVE back;

END IF;

END

$$

DELIMITER ;

实例:

mysql每天1点执行存储过程_一天一点MySQL复习——存储过程相关推荐

  1. mysql 动态传入表名 存储过程_面试再问MySQL存储过程和触发器就把这篇文章给他...

    Mysql存储过程及触发器trigger 存储过程 一.一个简单的存储过程 1,一个简单的存储过程 delimiter $$create procedure testa()begin Select * ...

  2. mysql索引执行计划_第六章· MySQL索引管理及执行计划

    一.索引介绍 1.为什么要做索引 让获取的数据更具有目的性,从而提高数据库检索数据的性能 2.索引类型介绍 1)BTREE:树索引 B+树索引 B*树索引 2)HASH:HASH索引 3)FULLTE ...

  3. mysql榨包是什么意思_模块与包 Mysql与Oracle区别

    1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码( ...

  4. mysql计算机二级选择题题库_全国计算机二级mysql数据库选择题及答案

    全国计算机二级mysql数据库选择题及答案 选择题是全国计算机二级mysql考试里的送分题,下面小编为大家带来了全国计算机二级mysql数据库选择题及答案,欢迎大家阅读! 全国计算机二级mysql数据 ...

  5. mysql删除不安全的账户_【20200407】MySQL账号不规则删除导致权限错误

    环境 CentOS release 6.8 (Final) 5.6.29-log MySQL Community Server (GPL) IP地址: 10.10.10.10 现象描述 1.创建程序账 ...

  6. mysql数据库应用的权限层级_涂抹MySQL--第5章 MySQL数据库中的权限体系 - 5.3权限级别(1)...

    5.3 权限级别 总的来说,MySQL数据库的权限从大的粒度上划分可以分成5类:全局.数据库.表.列.程序.通过对这5个大类权限的细分,可以精确地为某个用户分配从某台机器连接进来访问某个数据库下某个表 ...

  7. mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》

    延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  8. mysql一列数据转为一行_最最完整的 MySQL 规范都在这了

    本文核心内容如下: 正文部分 一.数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) ...

  9. mysql中sysdate函数转字符串_【转】MySQL:日期函数、时间函数总结(MySQL 5.X)

    转自:http://www.cnblogs.com/she27/articles/1377089.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time) ...

最新文章

  1. js和html以及css的区别,html、css、js中的区别与关系
  2. 辨别 Windows CE, Windows XP Embedded 和 Windows Mobile
  3. 卷积神经网络的实际意义
  4. C语言求最大公约数3种方法
  5. 使用Eclipse创建Web工程后未生成web.xml文件
  6. JSON学习笔记(一)- 语法
  7. SAP云平台测试帐号如何进入Neo环境
  8. 信息学奥赛C++语言:求三角形的面积
  9. python编程入门第3版pdf-Python核心编程第3版PDF电子书免费下载
  10. 红帽学习笔记[RHCSA] 第一课[Shell、基础知识]
  11. 星号99乘法表c语言,用Python打印九九乘法表与金字塔(*)星号
  12. 笔记本的无线网共享给台式机上网
  13. react组件设计原则_可靠React组件设计的7个准则之封装
  14. 毛玻璃 / 玻璃拟态 处理 backdrop-filter 兼容性问题
  15. 【天光学术】语言学论文:英语认知语言学和心理语言学的融通互补探析(节选)
  16. git 中 A C D M R T U X 分别解释
  17. 正版win10系统重装(更换固态硬盘等操作)保持之前正版激活教程
  18. 浏览器无法显示网页解决方法
  19. 数据挖掘实战应用案例精讲-【概念篇】数据湖(补充篇)(Data Lake )
  20. 《C语言程序设计》江宝钏主编-习题3-6-商和余

热门文章

  1. axios post参数为空
  2. redis于spring整合之RedisTemplate
  3. 家中路由添加静态IP映射(一)
  4. mp4 视频在网页上播放不了
  5. Java:基于LinkedList实现栈和队列
  6. 设计模式12——中介者模式
  7. 使用 Request.QueryString 接受参数时,跟编码有关的一些问题
  8. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
  9. mavenFailed to execute goal org.apache.maven.plugins:maven-surefire-plugin解决方法
  10. 解决OpenCV JavaCameraView相机preview方向问题