数据库之存储过程

本文介绍了MySQL存储过程的基本概念,包括创建、调用方法及参数设置。涵盖了无参数、带IN参数及OUT参数的存储过程实例,并对比了存储过程与构造函数的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们使用数据库的时候,MYSQL执行的顺序是,先判断写入的语句是否正确,然后在进行编译,最后再进行执行。存储过程通俗来说就是,我们在使用数据库的时候,经常会有一些重复性的操作,这些操作不仅仅是影响了我们工作时候的效率,也会拖慢计算机的速度。创建存储过程之后,计算机就能够省去判断和编译的过程吗,直接执行。


创建存储过程的方法和创建函数的方法基本类似,但是要注意的一点是参数的特点,过程的参数前面需要加上in ‘out、 inout等关键词,in表示该参数在调用过程的时候直接指定,不能返回;out 表示该参数能够返回,不能修改;inout 表示该参数可以修改和返回。

首先来创建一个不带参数的存储过程,用它来返回当前mYSQL的版本信息:


创建的过程很简单,不带参数的存储过程,在名称的后面可以加上括号也可以不加,调用过程的方法是Call 加上过程的名字。

然后来创建带一个in参数的存储过程,比如说我们要删除users表中的某一列,按照id选择:


users表中一共有9个记录,id是从1-9;


DELIMITER 是修改终止符,因为在写SQL语句之间要用分号隔开,但是计算机在识别到分号之后会立即执行,就执行不到后面的语句。


这里,我们通过call引用了过程,同时输入了参数7,所以users表格中的id=7的记录就删除了;


下面是创建带返回参数的存储过程,比如说我们要返回刚才删除后剩下的记录数量:


调用一下方法,检验一下刚才写的过程是否正确:


可以看到我在out参数里面写的是@r,@r表示的是一个变量,在这里称为用户变量,用来接收返回值,通过SELECT @r可以得到剩下的记录数量,而且,确实id=1的那条记录已经被删除了。

那么,还剩下最后一个问题,就是可不可以返回多个值呢,答案是可以的,这也算是和构造函数的不同,我们来创建过程,实现添加用户名,密码,输出添加的记录数以及总共的记录数量:


创建过程后,调用,并且输入参数,下面看看结果:


好的,david确实是加入到了users表格,接下来看看两个变量:


我们可以看到i的值是空的,这是因为在过程体中我们忘记写入:

SELECT  ROW_COUNT() INTO influence;

但是过程在创建之后,过程体是不能够修改的,只能删除重写:

DROP  PROCEDURE addAndReturnInfo;即可

关于构造函数和存储过程的区别:


 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值