MySQL存储过程的理解-mysql教程-学派吧

MySQL中的存储过程指的是存储在数据库中的SQL语句集合,当创建好存储过程后在运行时提供所需参数,存储过程就可以以代码指定的方式使用参数执行并返回值

在MySQL中提供了创建存储过程的能力。存储过程是MySQL以及其他数据库管理系统中的强大功能。接下来在文章中将为大家具体介绍MySQL中的存储过程,具有一定的参考作用,希望对大家有所帮助。

MySQL存储过程的理解-mysql教程-学派吧

【推荐课程:MySQL教程】

存储过程:

存储过程指的是存储在数据库中的SQL语句的集合。存储过程它可以包含业务逻辑,这是区分存储过程和视图的关键之一。另外存储过程还可以接受参数,我们可以在存储过程中设置变量,写入语句等。

存储过程如何工作

首先要先创建一个存储过程然后再运行。在运行的过程中需要提供它所需要的参数,然后存储过程将以代码指定的任何方式使用参数执行。例如,编写一个接受FruitId参数的存储过程。然后在存储过程可以获取该参数并使用它来检查该特定水果的库存。因此我们可以调用存储过程,即每次使用不同的水果ID它都将返回一个值,并显示该库存中有多少水果。

创建存储过程

我们可以通过CREATE PROCEDURE语句创建存储过程

CREATE PROCEDURE demo_name(p_1 INT)
BEGIN
  ...code goes here...
END;

demo_name指的是存储过程的名称,括号是必须的,如果里面不包含任何参数则括号可以为空

存储过程的主体是介于BEGIN和END关键字之间。这些关键字用于编写复合语句。复合语句可以包含多个语句,如果需要,可以嵌套这些语句。

例:创建一个存储过程名为FruitStock:

DELIMITER //

CREATE PROCEDURE FruitStock(thisFruit SMALLINT)
BEGIN
	SELECT 
		Fruit.FruitName, 
		Fruit.Inventory, 
		Units.UnitName
	FROM 
		Fruit INNER JOIN Units ON
		Fruit.UnitId = Units.UnitId
	WHERE 
		Fruit.FruitId = thisFruit;
END //

DELIMITER ;

创建好了一个存储过程,接下来将调用这个存储过程

调用一个参数为1的ID

CALL FruitStock(1);

删除存储过程

可以使用DROP PROCEDURE语句删除存储过程。

DROP PROCEDURE FruitStock;

改变存储过程

在存储过程中可通过下列语句更改存储过程ALTER PROCEDURE。

需要注意要更改存储过程的主体或其任何参数时,需要删除该过程然后再次创建

例:添加Fruit.FruitId所要返回的列表

DROP PROCEDURE IF EXISTS FruitStock;
DELIMITER //
CREATE PROCEDURE FruitStock(thisFruit SMALLINT)
BEGIN
	SELECT 
		Fruit.FruitId, 
		Fruit.FruitName, 
		Fruit.Inventory, 
		Units.UnitName
	FROM 
		Fruit INNER JOIN Units ON
		Fruit.UnitId = Units.UnitId
	WHERE 
		Fruit.FruitId = thisFruit;
END //

DELIMITER ;

总结:以上就是本篇文章的全部内容了,希望对大家有所帮助。

以上就是MySQL存储过程的理解的详细内容,更多请关注php中文网其它相关文章!

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/data/3419.html

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年4月9日 下午8:55
MySQL执行过程以及查询缓存的详细介绍-mysql教程-学派吧
下一篇 2019年4月9日 下午8:56

相关推荐

  • 阿里云RDS提示mysql: [Warning] Using a password on the command line interface can be insecure

    前沿 今天通过ECS对阿里云rds数据库进行导入。一直报错。 mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1227 (42000) at line 18: Access denied; you need (at least one…

    数据库运维 2019年6月12日
    6.8K00
  • 腾讯云DTS云数据库跨账号实例间迁移

    操作场景 云数据库跨账号实例间数据迁移,资源库和目标库都属于腾讯云数据库实例,但所属不同的主账号名下,这种数据库实例之间的数据迁移。本章节介绍通过 DTS 数据迁移功能实现从其他账号腾讯云数据库实例迁移数据至本账号下云数据库实例。 说明: 不支持通过云数据库跨账号的方式,进行中国站和国际站之间的云数据库迁移,如有相关诉求,请通过公网方式。 支持范围 源数据库…

    2026年1月5日
    36400
  • 数据隔离四个级别分别是哪些-mysql教程-学派吧

    数据库的四个级别分为:读取未提交内容,读取提交内容,可重读以及可串行化。但隔离级别也会造成脏读,不可重复读以及幻读等问题 【推荐课程:MySQL教程】 数据库隔离的四个级别分别为: Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未…

    2019年4月9日
    3.2K00
  • mysql存储引擎:myIsam和innodb的区别-mysql教程-

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。 MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData);索引文件是MYI (MYI…

    数据库运维 2019年4月24日
    3.5K00
  • MySQL性能优化的一些经验-mysql教程-

    为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使…

    数据库运维 2019年4月24日
    3.6K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部