【MySQL】创建存储过程的一点小坑

目录

背景

命令行小坑

总结


背景

今天学习到了MySQL存储过程的创建和使用,遇到了一点小坑

命令行小坑

一开始我使用的是命令行创建存储过程(该存储过程为返回数据表中最大年龄的用户id

代码如下

DELIMITER //
CREATE PROCEDURE Largest_Age ( OUT Largest_ID INT )
BEGIN
DECLARE This_ID INT;
DECLARE This_Age INT;
DECLARE L_Age INT DEFAULT 0;
DECLARE L_ID INT;

DECLARE Done INT DEFAULT 0;
DECLARE C1 CURSOR FOR SELECT id,age FROM user;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;

OPEN C1;
REPEAT
	FETCH C1 INTO This_ID , This_Age;
	IF NOT Done THEN
		IF This_Age > L_Age THEN
			SET L_Age = This_Age;
			SET L_ID = This_ID;
		END IF;
	END IF;
UNTIL Done END REPEAT;
CLOSE C1;

SET Largest_ID = L_ID;
END
//

数据表内容如下

按照以上代码一步一步敲,结果打完代码后出现了以下错误

没有选择数据库,尴尬,只好老老实实地选择数据库,然后一行一行重新输入

重新输入的话,可以直接使用↑键,快速回到你之前输入的代码中,然后再按回车键

调用存储过程,返回成功

使用F6创建命令列界面

输入存储过程代码,结果尴尬了,没打一半报错了

好像不允许使用DELIMITER 来修改结束标记?

接着,我不使用命令列界面,直接新建查询

执行

 执行成功,再使用命令列界面调用存储过程

执行成功

总结

在使用命令行创建存储过程时

记得先选择数据库,再输入存储过程代码,否则会报一个'ERROR 1046 (3D000): No database selected'的错

在使用Navicat创建存储过程时

如果使用F6命令列界面,可能不支持DELIMITER来修改结束标记,建议直接新建查询来创建存储过程

学习没有捷径,一步一个脚印,加油! 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值