MySQL存储过程(CREATE PROCEDURE 存储过程名(参数列表))
MySQL存储过程
#存储过程
/*
含义:一组预先编译好的SQL语句的集合,理解成批处理语句
1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
*/
一、创建语法
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
#注意:
/*
1、参数列表包含三部分
参数模式 参数名 参数类型
举例:
in stuname varchar(20)
参数模式:
in:该参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
2、如果存储过程体仅仅只有一句话,begin end可以省略
存储过程体中的每条sql语句的结尾要求必须加分号。
存储过程的结尾可以使用 delimiter 重新设置
语法:
delimiter 结束标记
案例:
delimiter $
*/
二、调用语法
CALL 存储过程名(实参列表);
#--------------------------------案例演示-----------------------------------
1.空参列表
#案例:插入到admin表中五条记录
SELECT * FROM admin;
DELIMITER $
CREATE PROCEDURE myp1()
BEGININSERT INTO admin(username,`password`) VALUES('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000');
END $
#调用
CALL myp1()$
2.创建带in模式参数的存储过程
#案例1:创建存储过程实现 根据女神名,查询对应的男神信息
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGINSELECT bo.*FROM boys boRIGHT JOIN beauty b ON bo.id = b.boyfriend_idWHERE b.name=beautyName;END $
#调用
CALL myp2('柳岩')$
#案例2 :创建存储过程实现,用户是否登录成功
CREATE PROCEDURE myp3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGINDECLARE result INT DEFAULT 0; #声明并初始化SELECT COUNT(*) INTO result #赋值FROM adminWHERE admin.username = usernameAND admin.password = PASSWORD;SELECT IF(result>0,'成功','失败');#使用
END $
#调用
CALL myp3('张飞','8888')$
3.创建out 模式参数的存储过程
#案例1:根据输入的女神名,返回对应的男神名
CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGINSELECT bo.boyName INTO boyNameFROM boys boRIGHT JOINbeauty b ON b.boyfriend_id = bo.idWHERE b.name=beautyName ;END $
#调用
CALL myp5('小昭',@bName)$
SELECT @bName$
#案例2:根据输入的女神名,返回对应的男神名和魅力值
CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT)
BEGINSELECT boys.boyName,boys.usercp INTO boyName,usercpFROM boys RIGHT JOINbeauty b ON b.boyfriend_id = boys.idWHERE b.name=beautyName;END $
#调用
CALL myp7('小昭',@name,@cp)$
SELECT @name,@cp$
4.创建带inout模式参数的存储过程
#案例1:传入a和b两个值,最终a和b都翻倍并返回
DELIMITER $
CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)
BEGINSET a:=a*2;SET b:=b*2;
END $
#调用
SET @m=10$
SET @n=20$
CALL myp8(@m,@n)$
SELECT @m,@n$
5.综合案例
#创建存储过程或函数实现传入女神名称,返回:女神 and 男神 格式的字符串
如 传入 :小昭
返回: 小昭 AND 张无忌
DROP PROCEDURE test_pro5 $
CREATE PROCEDURE test_pro5(IN beautyName VARCHAR(20),OUT str VARCHAR(50))
BEGINSELECT CONCAT(beautyName,' and ',IFNULL(boyName,'null')) INTO str #这里必须有IFNULL,否则如果没有的话会直接返回nullFROM boys boRIGHT JOIN beauty b ON b.boyfriend_id = bo.idWHERE b.name=beautyName;END $
CALL test_pro5('柳岩',@str)$
SELECT @str $
三、删除存储过程
#语法:drop procedure 存储过程名
DROP PROCEDURE p1;
DROP PROCEDURE p2,p3; #错误,不能删除多个
四、查看存储过程的信息
DESC myp2; # 错误
SHOW CREATE PROCEDURE myp2;
MySQL存储过程(CREATE PROCEDURE 存储过程名(参数列表))相关推荐
- MySQL函数(CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型)
MySQL函数 /* 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 区别: 存储过程: ...
- 创建存储过程create procedure
创建存储过程create procedure drop procedure if exists test01; delimiter SETAUTOCOMMIT=0SET AUTOCOMMIT = 0S ...
- mysql存储过程语法 if_mysql存储过程语法 if
MySql存储过程 MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程, ...
- mysql存储过程call_mysql call 存储过程
PHP调用MYSQL存储过程实例 PHP调用MYSQL存储过程实例 标签: mysql存储phpsqlquerycmd 2010-09-26 11:10 11552人阅读 评论(3) 收藏 举报 实例 ...
- mysql 局域网存储_MySQL 存储过程
修改定界符 DELIMITER $$ 创建存储过程 CREATE [DEFINER = {user | CURRENT_USER}] --当前用户,如果省略就是默认用户 PROCEDURE sp ...
- mysql基础——变量、存储过程和函数
目录 一.变量 1.1 基本介绍 1.2 系统变量 1.3 自定义变量 二.存储过程 2.1 基本介绍 2.2 存储过程的创建 2.3 存储过程的删除 2.4 存储过程的查看 2.5 ...
- oracle写完存储过程之后,oracle存储过程和自定义函数
create [or replace] PRocedure 过程名(参数列表) AS PLSQL 子程序体; 存储过程写完之后,要调用这个存储过程; 有两种方法: 1.exec 存储过程名(); 2. ...
- MySQL创建存储过程(CREATE PROCEDURE)
MySQL 存储过程是一些 SQL 语句的集合,比如有的时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程.下面 ...
- 2、MySQL创建存储过程(CREATE PROCEDURE)(函数)
MySQL 存储过程是一些 SQL 语句的集合,比如有时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程. 编写存 ...
最新文章
- 科室鄙视链最底端,居然是这类人
- SAP WM 业务部门Unplanned工单消耗导致WM层面单据异常问题之分析
- Eclipse编程快捷键
- Python统计TXT词云
- 为什么大公司一定要使用 DevOps?
- 我对架构的理解-概念篇
- 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法(FA-GN与IC-GN)
- java tfidf_Hanlp分词实例:Java实现TFIDF算法
- openstack tungsten fabric/contrail中虚拟机yum出现could not retrieve 14: curl#7 - “Failed to connect to
- win10分辨率设置正确但屏幕却被拉伸了,如何处理
- 2022李宏毅第14讲---机器终身学习(Life Long Learning)
- postgresql性能分析工具-pgstatpack-2.3.3.1
- 【每日最爱一句】2013.07.31
- dat文件导入cad画图步骤_准确又高效的读入CAD几何——详解Fluent Meshing导入文件的几种方法...
- 冬瓜你只会煮汤吗?其实还能这样吃!
- Jquery利用淘宝接口判断手机运营商和归属地
- centos8上安装MP-SPDZ
- 计算机php开发技术,基于PHP技术的计算机基础考试系统的开发
- Ubuntu的音频播放器,视频播放器和其他应用程序选择与配置
- 克鲁斯卡尔算法(Kruskal)详解
热门文章
- Java笔记:抽象类和接口
- 在JSP中使用数据库
- 详解项目管理认证(PMP、IPMP、ITPMP、CPMP)
- windows server 2012R组策略
- 三节锂电池充电管理芯片,IC电路图,BOM物料表
- 使用libreswan搭建ipsec点对点隧道 实现两idc内网网段互通
- 电路原理图中的“NC“是什么意思?
- pomelo mysql_pomelo链接mysql
- 「Unity3D」解决2022的PackageManager无法显示官方插件Burst和Collections的最新版本
- 如何设计一个基于SSM的旅游网站管理系统