MySQL 存储过程 简记

(所有需要操作的表都在这里建立:https://blog.csdn.net/qq_44647223/article/details/110249062)

存储过程:提供一种方法,将一些固定的操作集合起来,由数据库服务器来完成,实现某个特定任务。存储过程是存储在数据库服务器中的一组编译成单个执行计划的SQL语句。

使用存储过程的好处:

  • 由于存储过程不像解释执行的SQL语句那样在提出操作请求时才进行语法分析和优化,因而运行效率高,它提供了在服务器端快速执行SQL语句的有效途径。
  • 存储过程降低了客户机和服务器之间的通信量,客户机上的应用程序只要通过网络向服务器发出存储过程的名字和参数,就可以让RDBMS执行多条SQL语句,并行数据处理,只将最终结果返回客户端。
  • 方便实施企业规则,开发人员可以把企业规则的运算程序写成存储过程放入数据库服务器,由RDBMS管理,既有利于集中控制,又维护方便,当用户规则发生变化时只要修改存储过程,无需修改其他应用程序。

创建存储过程

CREATE PROCEDURE 存储过程名[;版本号]
[{@参数 数据类型}[VARYING] [=默认值][OUTPUT],
...]
[WITH {RECOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION}]
[FOR REPLICATION]
AS
  SQL语句

主要参数作用:

  • 存储过程名:存储过程的名称。
  • [; 版本号]:把多个同名的存储过程合成一个组
  • @参数:存储过程中的参数,可以声明一个或多个参数,但必须在执行存储过程时提供每个参数的值(除非定义了该参数的默认值)
  • 数据类型:参数的数据类型
  • VARYING:用于存储过程的输出参数为游标的情况
  • =默认值:设置参数的默认值,如果定义了默认值,则不必指定该参数的值即可执行存储过程,默认值必须是常量或NULL,也可以包括通配符。
  • OUTPUT:表明参数是返回参数。
  • RECOMPILE:指明存储过程并驻留过程在内存中,而是在每次执行时重新编译。
  • ENCRYPTION:用于对存储创建过程的SQL语句的系统表syscomments进行加密,使其它用户无法查询到存储过程的创建语句。
  • FOR REPLICATION:表示存储过程只能在复制过程中执行,和ENCRYPTION不能同时使用。
  • SQL语句:存储过程所要执行的操作,它可以是一组SQL语句,可以包含流程控制语句等,但这些SQL语句不能用于创建数据库、视图、表、规则、触发器或其他存储过程,也不能使用USE语句选择其他数据库。

基本的存储过程

(1) 不带参数

DELIMITER $$
CREATE PROCEDURE exp2()
BEGIN
	select * FROM stock;
END$$

在这里插入图片描述
使用存储过程exp2

CALL exp2;

在这里插入图片描述
(2) 带参数

DELIMITER $$
CREATE PROCEDURE exp3(IN mat_num2 varchar(10)) 
BEGIN
	select * FROM stock where mat_num = mat_num2;
END$$

在这里插入图片描述

使用exp3存储过程:

CALL exp3('m001')

在这里插入图片描述
(3) 带多个参数

DELIMITER $$
CREATE PROCEDURE exp4(IN warehouse2 varchar(10), IN amount2 INT) 
BEGIN
	select * FROM stock where warehouse = warehouse2 AND amount > amount2;
END$$

在这里插入图片描述
使用exp4存储过程:

CALL exp4('1#仓库',10)

在这里插入图片描述

修改存储过程

MYSQL不提供存储过程或函数的代码修改,只能修改存储过程或函数的定义,如果一定要修改存储过程或函数的代码,需要删除原来的代码,并创建新的同名存储过程

删除存储过程

 DROP  PROCEDURE  name; ---name:存储过程

删除exp3存储过程
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值