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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。
很多人担心学了容易忘,这里教你一个方法,那就是重复学习。
打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。
从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。
人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
*
打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。
从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。
[外链图片转存中…(img-3OObA3Mw-1712477261945)]
人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!