2:创建带in模式参数的存储过程 创建存储过程实现,根据女神名,查询对应得男神信息。 CREATE PROCEDURE myp2(IN beautyName VARCHAR(20)) BEGIN SELECT bo.* FROM boys bo RIGHT JOIN beauty b ON bo.id = b.boyfriend_id WHERE b.name=beautyName; END $
#调用: CALL myp2('贝尔摩德')$
3:创建存储过程实现,用户是否登录成功 CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) 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('秀一','8888')$
4:创建out 模式参数的存储过程 根据输入的女神名,返回对应的男神名 CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20)) BEGIN SELECT bo.boyname INTO boyname FROM boys bo RIGHT JOIN beauty b ON b.boyfriend_id = bo.id WHERE b.name=beautyName ; END $
5:根据输入的女神名,返回对应的男神名和魅力值 CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT) BEGIN SELECT boys.boyname ,boys.usercp INTO boyname,usercp FROM boys RIGHT JOIN beauty b ON b.boyfriend_id = boys.id WHERE b.name=beautyName ; END $
#调用: CALL myp7('鸣人',@name,@cp)$ SELECT @name,@cp$
6:创建带inout模式参数的存储过程 传入a和b两个值,最终a和b都翻倍并返回 CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT) BEGIN SET a=a*2; SET b=b*2; END $
#调用 SET @m=10$ SET @n=20$ CALL myp8(@m,@n)$ SELECT @m,@n$
删除存储过程 语法:drop procedure 存储过程名 DROP PROCEDURE p1; √ DROP PROCEDURE p2,p3; ×
查看存储过程的信息 DESC myp2; × SHOW CREATE PROCEDURE myp2; √
#一、创建存储过程实现传入用户名和密码,插入到admin表中 CREATE PROCEDURE test_pro1(IN username VARCHAR(20),IN loginPwd VARCHAR(20)) BEGIN INSERT INTO admin(admin.username,PASSWORD) VALUES(username,loginpwd); END $
#二、创建存储过程实现传入女神编号,返回女神名称和女神电话 CREATE PROCEDURE test_pro2(IN id INT,OUT NAME VARCHAR(20),OUT phone VARCHAR(20))
BEGIN SELECT b.name ,b.phone INTO NAME,phone FROM beauty b WHERE b.id = id;
END $
#三、创建存储存储过程或函数实现传入两个女神生日,返回大小 CREATE PROCEDURE test_pro3(IN birth1 DATETIME,IN birth2 DATETIME,OUT result INT) BEGIN SELECT DATEDIFF(birth1,birth2) INTO result; END $
#四、创建存储过程或函数实现传入一个日期,格式化成xx年xx月xx日并返回 CREATE PROCEDURE test_pro4(IN mydate DATETIME,OUT strDate VARCHAR(50)) BEGIN SELECT DATE_FORMAT(mydate,'%y年%m月%d日') INTO strDate; END $
CALL test_pro4(NOW(),@str)$ SELECT @str $
#五、创建存储过程或函数实现传入女神名称,返回:女神 and 男神 格式的字符串 如 传入 :小昭 返回: 小昭 AND 张无忌 DROP PROCEDURE test_pro5 $ CREATE PROCEDURE test_pro5(IN beautyName VARCHAR(20),OUT str VARCHAR(50)) BEGIN SELECT CONCAT(beautyName,' and ',IFNULL(boyName,'null')) INTO str FROM boys bo RIGHT JOIN beauty b ON b.boyfriend_id = bo.id WHERE b.name=beautyName; SET str=
END $
CALL test_pro5('柳岩',@str)$ SELECT @str$
#六、创建存储过程或函数,根据传入的条目数和起始索引,查询beauty表的记录 DROP PROCEDURE test_pro6$ CREATE PROCEDURE test_pro6(IN startIndex INT,IN size INT) BEGIN SELECT * FROM beauty LIMIT startIndex,size; END $