极速掌握MySQL存储过程,开学秒室友

SET p_in=2;

SELECT p_in;

END;

//

DELIMITER ;

##调用,给一个变量,不影响外面参数的值

call demo_in_parameter(3);

MySQL [db1]> set @p_in=66;

MySQL [db1]> call demo_in_parameter(@p_in);

注意:CMD窗口执行,记得留意空格

在这里插入图片描述

inout 参数

##CMD创建

DELIMITER //

CREATE PROCEDURE demo_inout_parameter(INOUT p_inout int)

BEGIN

SELECT p_inout;

SET p_inout=2;

SELECT p_inout;

END;

//

DELIMITER ;

##调用,影响外面传参的值

mysql> SET @p_inout=1;

mysql> CALL demo_inout_parameter(@p_inout);

在这里插入图片描述

🍁 三、实战案例


🍃 3.1 条件语句

mysql> create table t1(id int);

##case 语句

DELIMITER //

CREATE PROCEDURE proc3 (in parameter int)

begin

declare var int;

set var=parameter+1;

case var

when 0 then

insert into t values(17);

when 1 then

insert into t values(18);

else

insert into t values(19);

end case;

end;

//

DELIMITER ;

🍃 3.2 循环语句

mysql> create table t2(id int);

##repeat···· end repeat,它在执行操作后检查结果

DELIMITER //

CREATE PROCEDURE proc5 ()

begin

declare v int;

set v=0;

repeat

insert into t values(v);

set v=v+1;

until v>=5

end repeat;

end;

//

DELIMITER ;

mysql> call proc5;

mysql> select * from t2;

在这里插入图片描述

🍃 3.3 动态生成表

##学生表

select * from tb_student

在这里插入图片描述

##成绩表

select * from tb_score

在这里插入图片描述

选课表

select * from tb_course

在这里插入图片描述

编写一个存储过程,

要求对每门已选课程生成成绩表,表名为课程名,成绩表的字段包括学号、姓名、班级、成绩。

如果能独立完成,证明你的数据库应用能力已经跃上了一个台阶

DROP PROCEDURE create_table_pro;

DELIMITER //

CREATE PROCEDURE create_table_pro()

BEGIN

定义接受sql数据的变量

DECLARE courseNo varchar(50);

DECLARE studentNo varchar(20);

DECLARE studentName varchar(20);

DECLARE classNo varchar(20);

DECLARE score int;

声明表名称

DECLARE tblname VARCHAR(32);

总行数

DECLARE cnt INT DEFAULT 0;

循环变量i

DECLARE i INT DEFAULT 0;

declare tmp_cursor cursor for(

select

c.courseNo,

a.studentNo,

a.studentName,

a.classNo,

b.score from tb_student a,tb_score b,tb_course c

where a.studentNo = b.studentNo

and b.courseNo = c.courseNo

order by 1);

SELECT COUNT(*) INTO cnt from tb_student a,tb_score b,tb_course c

where a.studentNo = b.studentNo

and b.courseNo = c.courseNo;

open tmp_cursor;

开始循环

REPEAT

SET i := i+1;

FETCH tmp_cursor INTO courseNo,studentNo,studentName,classNo,score;

SET tblname = CONCAT(‘course_’,courseNo);

SET @delTabl = CONCAT(‘DELETE FROM ‘,tblname,’ WHERE studentNo=’,‘’‘’,studentNo,‘’‘’);

SET @createTbsql = CONCAT('create table if not exists ‘,tblname,’(studentNo char(10) not null primary key,

studentName varchar(10) not null,classNo char(6),credite int) ENGINE=InnoDB DEFAULT CHARSET=GB2312;');

SET @insertTabl = CONCAT(’ insert into ‘,tblname,’ values(',

‘’‘’,studentNo,‘’‘’,‘,’,

‘’‘’,studentName,‘’‘’,‘,’,

‘’‘’,classNo,‘’‘’,‘,’,

‘’‘’,score,‘’‘’,

‘)’

);

select @insertTabl;

执行动态删除表语句

PREPARE temp FROM @delTabl;

EXECUTE temp;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。

很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
*

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

[外链图片转存中…(img-3OObA3Mw-1712477261945)]

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值