Oracle实验三 PL/SQL匿名块
第1关:PL/SQL匿名块1
1、打印001号学生的姓名和年龄。打印结果格式(忽略行标号,其中冒号为中文状态下的冒号):
001号同学的姓名:查询出的姓名
001号同学的年龄:查询出的年龄
declare
vsname varchar(20);
vsage smallint;
begin
select sname,sage into vsname,vsage from Student
where sno='001';
dbms_output.put_line('001号同学的姓名:'||vsname);
dbms_output.put_line('001号同学的年龄:'||vsage);
end;
2、将年龄最大的同学的学号,姓名,年龄打印出来(注:年龄最大的同学只有一个)。其格式为(忽略行标号):
查询出来的学号,查询出来的姓名,查询出来的年龄,性别(查询出来的性别,若是’f’,显示:美女。若是’m’显示:帅哥。)
例如:(其中逗号为英文状态下的逗号)
001,张三,20,美女
declare
vsno char(10);
vsname varchar(20);
vsage smallint;
vssex char(2);
begin
select sno,sname,sage,sex into vsno,vsname,vsage,vssex from Student
where sage>=all(select sage from Student);
if vssex='m' then
dbms_ouput.put_line(vsno||','||vsname||','||vsage||','||'帅哥');
else
dbms_ouput.put_line(vsno||','||vsname||','||vsage||','||'美女');
end if;
end;
第2关:PLSQL匿名块2
1、将‘004’号同学的年龄改为18岁,系别改为‘E’,为CS系年龄最小的同学选‘C01’号课程。
commit别忘记!
begin
update Student set sage=18,sdept='CS' where sno='004';
insert into SC(sno,cno) select sno,'C01' from Student where sdept='CS' and sage<=all(select sage from Student where sdept='CS') and not exists(select*from SC where sno=Student.sno and cno='C01');
commit;
end;
2、为‘002’号同学选‘C02’课程。将选课人数最多的课程的最大选课人数(snumber)改为105。
begin
insert into SC(sno,cno) values('002','C02');
update Course set snumber=105 where cno in(select cno from SC where Course.cno=SC.cno group by SC.cno having count(sno)>=all(select count(sno) from SC group by SC.cno));
commit;
end;