MySQL数据库存储过程教程

使用存储过程先得了解怎样使用它们,存储过程被执行的次数远远的多于它被写的次数,因此本文先介绍怎样执行存储过程。之后再介绍怎样创建存储过程和其他一些操作。

执行存储过程的方法

MySQL通过类似函数调用的方法来执行存储过程,因此使用一个简单的关键字CALL就能实现调用。CALL命令需要存储过程的名字以及需要传递给它的参数来调用。例如如下的例子:

 

这里一个名字是productpricing的存储过程被调用,它计算并返回产品的最低、最高和平均价格。

存储过程可能会也可能不会打印结果,很快你就会看到。

创建存储过程

已经解释过,写一个存储过程并非微不足道。先看一个简单的例子,该存储过程返回了产品的平均价格:

 

该存储过程名字是productpricing,使用一句CREATE PROCEDURE productpricing()就能定义它。如果该存储过程要带参数的话,放到括号中间就可以。虽然本存储过程不带参数,但是()两个括号也必须写上。BEGIN和END关键词用于区分存储过程的body,该body自己只有一个select语句。

当MySQL执行该段代码的时候,它会创建一个叫做productpricing的存储过程,因为并没有被调用所以不会有返回值,它只是被创建以待将来使用。

如果你使用的是MySQL的命令行,还需要注意分隔符问题。默认的MySQL分隔符是分号“;”,然而我们执行MySQL命令的时候用的分隔符也是分号。如果命令工具试图解释一个存储过程的时候,因为里面有分号会被当做SQL命令执行,但是一个存储过程可能还没有定义完,这时候就会出错。

解决方法是我们可以临时的改变MySQL命令段的分隔符:

 

本代码中DELIMITER //告诉命令端使用//作为新的命令分隔符,所以本代码中原来的“END;”变成了现在的“END//”,这样的话,存储过程内部的分号将不被作为命令分隔符解释,整个存储过程被一起当做整体传递给解释引擎。最后DELIMITER ;将默认分隔符设置回去。

除了\符号,任何符号可以作为命令分隔符。

如果你使用MySQL命令行来做实验,一定要注意对命令分隔符的处理。

使用该存储过程的方法:

 

 

 

CALL productpricing();该命令执行了刚才创建的存储过程并输出了结果。因为存储过程被当做函数来调用,即使没有参数,也需要在名字后面带上括号。

删除存储过程的方法

存储过程一旦被创建,除非删除它,否则一直存在于服务器上等待调用。drop命令可以删除服务器上的指定存储过程。

 

该句删除了刚刚创建的存储过程。注意名字后面没有带括号(),这里只用指定名字。

如果服务器上并没有存在该存储过程,该语句会抛出一个错误。为了避免这种情况,我们可以使用另一种调用方法:“DROP PROCEDURE IF EXISTS”,这样只有在存在的时候才会执行删除。

带参数的存储过程

productpricing是一个只展示结果的简单的存储过程。但是一般来说存储过程并不展示结果,它们将结果存入你传入的参数里面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁学Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值