创建带有IN类型参数的存储过程(四十八)
创建带有IN类型参数的存储过程
我们经常要从数据表中删除记录,一般情况我们删除记录都是根据id来删除的,比如我们通常要输入DELETE FROM 表名 WHERE 后面跟上我们的条件,因为我们要经常写这个语句,那么我们就可以将这个语句封装成一个存储过程,比如我们以users表为例,我们先来看一下user表的结构,我们输入 DESC user;

我们再来查看一下表中的记录,我们输入SELECT * FROM user;

假设我们现在要以id来删除记录。id每次都不固定,那么就需要我们在每次调用这个过程的时候去传递,所以我们现在需要带有IN类型的参数。
我们学习自定义函数的时候说过,所以这里我们也要修改一下mysql的定界符,我们输入DELIMITER // 把定界符改为//
下面我们来创建一个存储过程,我们输入CREATE PROCEDURE removeUserById(IN id INT UNSIGNED)
BEGIN
DELETE FROM user WHERE id=id; 第一个id是字段id,第二个id是我们要传入的参数,
END
//

OK,命令执行成功,下面我们再把定界符改过来,我们输入DELIMITER ;

OK,这个存储过程我们就创建成功了,下面我们来调用一下这个存储过程,因为我们定义的是有参的存储过程,所以我们就输入CALL removeUserById(4);

OK,命令执行成功,现在我们来查看一下这条记录有没有被删除掉,我们输入 SELECT * FROM user;

我们发现表中的记录都被删除掉了,这是为什么呢?
因为我们的参数名和字段名是一样的,我们知道第一个和第二个id分别表示什么意思,但是系统不知道呀,他会认为是两个字段,所以说我们在写参数名的时候,不能让参数名和字段名一样。这一点大家一定要记着,下面我们来修改一下这个存储过程,我们先来看一下修改存储过程的命令。
ALTER PROCEDURE sp_name [characteristic ...]
COMMENT 'string'
| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
| SQL SECURITY { DEFINER | INVOKER}
实际上他只能修改这几个简单的选项,比如注释、内容的类型等等,并不能修改过程体,如果是修改过程体的话,只能先将存储过程删除,然后再进行重建,删除存储过程的方法很简单,就是DROP PROCEDURE [IF EXISTS] sp_name,所以我们现在只能先删除存储过程,我们输入DROP PROCEDURE removeUserById;

好,命令执行成功,刚才的那个存储过程就已经被删除掉了,现在我们先把数据表中的记录重构一下,然后再把存储过程重新创建一下,我们先来插入几条数据。

接下来我们就重新来构建一下存储过程,并修改一下定界符。我们输入DELIMITER //
OK,我们输入CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
BEGIN
DELETE FROM user WHERE id=p_id; id是字段id, p_id是我们要传入的参数,
END
//

OK,这个存储过程我们就创建成功了,下面我们先来查看一下数据表的记录,我们输入SELECT * FROM user;

OK,接下来我们调用一下这个刚创建的存储过程,我们输入CALL removeUserById( 13);

OK,命令执行成功,下面我们看一下id=13的记录是否被删除掉。我们输入SELECT * FROM user WHERE id=13;

我们发现这条记录并不存在,也就说明这条记录已经被我们删除了,OK,这就是我们演示的第一个带有IN类型的参数。
创建带有IN类型参数的存储过程(四十八)的更多相关文章
- NeHe OpenGL教程 第四十八课:轨迹球
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 第四十八个知识点:TPM的目的和使用方法
第四十八个知识点:TPM的目的和使用方法 在检查TPM目的之前,值得去尝试理解TPM设计出来的目的是为了克服什么样的问题.真正的问题是信任.信任什么?首先内存和软件运行在电脑上.这些东西能直接的通过操 ...
- SQL注入之Sqli-labs系列第四十七关,第四十八关,第四十九关(ORDER BY注入)
0x1 源码区别点 将id变为字符型:$sql = "SELECT * FROM users ORDER BY '$id'"; 0x2实例测试 (1)and rand相结合的方式 ...
- 《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)
1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十二(四十八)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- C#编程(四十八)----------列表
C#中的List C#中deList怎么样?List<T>类是ArrayList类的泛型等效类,该类使用大小可按需动态增长的数组实现List<T>泛型接口. 泛型的好处:它为使 ...
- Unity 游戏框架搭建 2019 (四十八/四十九) MonoBehaviourSimplify 中的消息策略完善&关于发送事件的简单封装
MonoBehaviourSimplify 中的消息策略完善 在上一篇,笔者说,MonoBehaviourSimplify 中的消息策略还有一些小问题.我们在这篇试着解决一下. 先贴出来代码: usi ...
- Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》
之前本专栏文章中的小案例有写到:第三十九话<Chronometer实现倒计时> 以及使用异步实现倒计时:第三十三话< AsyncTask异步倒计时> 本篇文章 结合Timer. ...
- 性能测试四十八:Jenkins+Ant+Jmeter系统部署
工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码G ...
随机推荐
- Maven命令下载源码和javadocs
1:Maven命令下载源码和javadocs 当在IDE中使用Maven时如果想要看引用的jar包中类的源码和javadoc需要通过maven命令下载这些源码,然后再进行引入,通过mvn命令能够容易的 ...
- 紫书 习题8-4 UVa 11491 (贪心)
题意:给你一个数, 要求删去一些数字, 使得剩下的数字最大. 这道题用贪心解决. 大家想一想, 两个数比较大小, 肯定先比较第一位的数,然后依次比较第二位,以此类推. 既然我们要保证最后的数字最大, ...
- 洛谷P4894 GodFly求解法向量
如果没有学过向量相关知识请出门右转高中数学必修四~~~ 当然如果你和我一样也是小学生我也不反对 首先说结论:\(\vec{z}=(y1z2-y2z1,z1x2-z2x1,x1y2-x2y1)\) 其实 ...
- ajax前台传到后台乱码,显示问号的问题
response.setContentType("text/html;charset=gbk"); response.setHeader("Cache-Control&q ...
- HDU 4965 Fast Matrix Calculation(矩阵高速幂)
HDU 4965 Fast Matrix Calculation 题目链接 矩阵相乘为AxBxAxB...乘nn次.能够变成Ax(BxAxBxA...)xB,中间乘n n - 1次,这样中间的矩阵一个 ...
- Pascal Script
MsgBox http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_msgbox ExpandConstant http://www.jrs ...
- 关于nth-of-type和nth-child的关系
一开始写样式的时候喜欢全部元素都来个class,后面发现这样一个页面下来很多个class,起名字起到发慌,然后老师说该多用 逻辑关系来写样式,就是这种第几个孩子啊这种,不知道你们有没有这种烦恼,要用的 ...
- <Sicily>Threecolor problem
一.题目描述 有红黄蓝3种颜色的n个珠子,师傅希望悟空把它们排成红色珠子在左,黄色珠子居中,蓝色珠子在右的一行,然后告诉师傅,从左数起,第m个珠子是什么颜色.众所周知,悟空是只猴子,他没有这个耐心,你 ...
- Bayes++ Library入门学习之熟悉class-Bayesian_filter_base(2)
前面我们已经熟悉了Bayesian_filter::Bayes_filter_base和其子类的击继承关系,接下来我们开始学习该类的实现. bayesFlt.hpp文件为其实现主体,首先是两个常规的头 ...
- CentOS7-1810 系统Samba配置说明
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件.SMB(Server Messages Block,信息服务块)通信协议是微软(Microsoft)和英特尔(Intel)在198 ...