mysql存储过程案例

mysql存储过程案例

直接po代码和案例

#mysql存储过程案例

#一、创建存储过程实现传入用户名和密码,插入到admin表中
/*
将$美元符作为结束和提交的标志符,只有遇到$美元符号才会提交给mysql数
据库执行,遇到;分号是不会提交给mysql数据库执行的
*/
DELIMITER $
CREATE PROCEDURE test_pro1(IN username VARCHAR(30), IN `password` VARCHAR(30))
BEGIN
	INSERT INTO admin(admin.username,admin.`password`) 
	VALUES (username, `password`);
END;$

#带了分号;(语法OK)
CALL test_pro1('双儿', '666888');$
#没带分号;(语法OK)
CALL test_pro1('建宁公主', '666888')$


#二、创建存储过程实现传入女神编号,返回女神名称和女神电话
DELIMITER $
CREATE PROCEDURE test_pro2(IN id INT, OUT `name` VARCHAR(30), OUT phone VARCHAR(30))
BEGIN
	SELECT beauty.`name`, beauty.phone INTO `name`, phone FROM beauty
	WHERE beauty.id = id;
END;$
#调用存储过程
SET @name = '';$
SET @phone = '';$
CALL test_pro2(18, @name, @phone);$
SELECT @name AS 女神名, @phone AS 女神号码;$

#调用存储过程
CALL test_pro2(15, @n, @p);$
SELECT @n AS 女神名, @p AS 女神号码;$


#三、创建存储存储过程或函数实现传入两个女神生日,返回大小
DELIMITER $
CREATE PROCEDURE test_pro3(IN birth1 DATETIME, IN birth2 DATETIME, OUT result INT)
BEGIN
	SELECT DATEDIFF(birth1, birth2) INTO result;
END$
#
SET @result = 666; #注意:用户变量要求声明时必须初始化
CALL test_pro3('2019-01-12', '2019-01-15', @result)$
SELECT @result AS 结果$
CALL test_pro3('2019-01-22', '2019-01-21', @result)$
SELECT @result AS 结果$
CALL test_pro3('2019-01-18', '2019-01-18', @result)$
SELECT @result AS 结果$
CALL test_pro3('2019-01-18', NOW(), @res)$
SELECT @res AS 结果$

#四、创建存储过程或函数实现传入一个日期,格式化成xx年xx月xx日并返回
DELIMITER $
CREATE PROCEDURE test_pro4(IN myDate DATETIME, OUT strDate VARCHAR(60))
BEGIN
	SELECT DATE_FORMAT(myDate, '%Y年%m月%d日') INTO strDate;
END$

#调用
SET @myStrDate = ''$
CALL test_pro4(NOW(), @myStrDate)$
SELECT @myStrDate$

#五、创建存储过程或函数实现传入女神名称,返回:女神 and 男神  格式的字符串
/*
如 传入 :小昭
返回: 小昭 AND 张无忌
*/
DELIMITER $
CREATE PROCEDURE test_pro5(IN `name` VARCHAR(30), OUT result VARCHAR(50))
BEGIN
	SELECT CONCAT(`name`, ' and ', IFNULL(bo.boyName,'null')) INTO result FROM beauty AS b
	LEFT OUTER JOIN boys AS bo
	ON b.boyfriend_id = bo.id WHERE b.name = `name`;
END$
#
#调用存储过程
SET @result = ''$ #注意:用户变量要求声明时必须初始化
CALL test_pro5('范冰冰', @result)$
SELECT @result AS 结果$
#
CALL test_pro5('小昭', @res)$
SELECT @res AS 结果$
#
CALL test_pro5('黄圣依', @res)$
SELECT @res AS 结果$

#六、创建存储过程或函数,根据传入的条目数和起始索引,查询beauty表的记录
DELIMITER $
CREATE PROCEDURE test_pro6(IN startIndex INT, IN size INT)
BEGIN
	SELECT * FROM beauty LIMIT startIndex, size;
END;$
#调用存储过程
CALL test_pro6(0, 10)$
CALL test_pro6(5, 8)$

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值