mysql实验七存储过程及函数_<MySQL>入门七 存储过程和函数

--存储过程和函数/*存储过程和函数:类似java中的方法

好处:

1.提高代码的重用性

2.简化操作*/

/*存储过程 含义:一组预先编译好的SQL语句的集合。理解成批处理语句

1.提高代码的重用性

2.简化操作

3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率*/

--创建存储过程

CREATE PROCEDURE存储过程名(参数列表)BEGIN存储过程体(一组合法的SQL)END

/*注意:

1.参数列表包含三部分:参数模式 参数名 参数类型

例如:IN stuName varchar(20);

参数模式:

IN :该参数可以作为输入,需要调用方传入值

OUT :改参数可以作为输出,该参数作为返回值

INOUT :该参数既可以输入也可以输出,该参数既需要传入值,又可以返回值

2.如果存储过程提只有一句话,begin end 可以省略

3.存储过程体中每条SQL语句的结尾必须加分号

4.存储过程的结尾可以使用 DELIMITER 重新设置

例如 DELIMITER 任意字符*/

--调用存储过程

CALL 存储过程名(实参列表);------------------------案例-------------------------------------------1.空参列表--插入到amdin表中五条记录

DELIMITER $CREATE PROCEDUREmyp1()BEGIN

INSERT INTO admin(username,`password`) VALUES('a','00000'),

('b','00000'),

('c','00000'),

('d','00000'),

('e','00000');END$--调用

CALL myp1()$--2.创建代in模式参数的存储过程--案例1.创建存储过程,根据女神名查询对应的男生信息

DELIMITER $CREATE PROCEDURE myp2(IN beautyName VARCHAR(50))BEGIN

SELECT bo.* FROM boys bo JOIN beauty be ON bo.id = be.boyfriend_id WHERE be.name =beautyName;END$--调用

CALL myp2('麦克雷')$ --如果出现字符集问题,可以set names gbk$

--案例2 创建存储过程,实现用户是否登录成功

DELIMITER $CREATE PROCEDURE myp3(IN username VARCHAR(10),IN PASSWORD VARCHAR(10))BEGIN

DECLARE result INT DEFAULT 0; --声明局部变量并初始化

SELECT COUNT(*) INTO result FROM admin WHERE admin.`username`=username AND admin.`password`=PASSWORD;SELECT IF(result>0,'成功','失败');END$--调用

CALL myp3('john','8888')$--3.创建代 in / out的存储过程--案例1 根据女神名,返回对应的男神名

DELIMITER $CREATE PROCEDURE myp4(IN NAME VARCHAR(50),OUT boyName VARCHAR(20))BEGIN

SELECT bo.boyName INTOboyNameFROM boys bo JOIN beauty be ON bo.id =be.boyfriend_idWHERE be.name =NAME;END$--调用

CALL myp4('麦克雷',@bName)$SELECT @bName$--案例2.根据女神名,返回对应的男神名和男神魅力值

DELIMITER $CREATE PROCEDURE myp5(IN NAME VARCHAR(50),OUT boyName VARCHAR(20),OUT userCP INT)BEGIN

SELECT bo.boyName,bo.userCP INTOboyName,userCPFROM boys bo JOIN beauty be ON bo.id =be.boyfriend_idWHERE be.name =NAME;END$--调用

CALL myp5('麦克雷',@boyName,@userCP)$SELECT @boyName,@userCP$--4.创建代 inout 模式参数的存储过程--案例1.传入a和b两个值,最终a,b都翻倍并返回

DELIMITER $CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)BEGIN

SET a = a*2;SET b = b*2;END$--定义用户变量

SET @m = 10$SET @n = 20$--调用

CALL myp6(@m,@n)$--查询值

SELECT @m,@n$

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值