【Oracle】匿名块练习

本文展示了使用PL/SQL进行学生信息查询,包括查询学生姓名、所在系,判断学生成绩是否优秀,按等级划分课程成绩,处理异常情况,修改成绩,以及创建函数获取最高分和平均成绩。这些示例涵盖了数据库操作的基本要素。

目录

1 . 根据学生学号查询学生姓名、所在系。

2.‘0811101’同学的平均分若高于80分则显示’成绩优秀!’,否则显示’努力学习!’

3.将’0811101‘同学选修的’C002‘课程按成绩划分等级,90分以上’优秀’,80分以上’良好’ ,70分以上’中等’ ,60分以上’及格’ ,其它为不及格。

4.根据输入的学号查询该名学生的姓名,若没有输入学号的学生,则抛出异常“没有该学生”。

5.修改‘0811101’同学选修的‘C002’的成绩,若超出100,则不做修改。(如果建表时已经设置了成绩不能超出100的约束,则不能在此表执行)

6.创建一个函数,根据输入的课程号,输出最高成绩

7.创建名为“F1”的函数,以课程号为参数,返回该门课程的平均成绩。


1 . 根据学生学号查询学生姓名、所在系。

declare 
  vid s.sid%type:=&a;
  vname s.sname%type;
  vdept s.department%type;
begin
  select sname,department into vname,vdept from s where sid=vid;
  dbms_output.put_line(vname||'  '||vdept);
end;

2.‘0811101’同学的平均分若高于80分则显示’成绩优秀!’,否则显示’努力学习!’

declare
  vgrade sc.grade%type;
begin 
  select avg(grade) into vgrade from sc where sid=103;
  if vgrade>80 then dbms_output.put_line('成绩优秀!');
  else dbms_output.put_line('努力学习!');
  end if;
end;

3.将’0811101‘同学选修的’C002‘课程按成绩划分等级,90分以上’优秀’,80分以上’良好’ ,70分以上’中等’ ,60分以上’及格’ ,其它为不及格。

declare
  vgrade sc.grade%type;
begin 
  select grade into vgrade from sc where sid=103 and cid=3245;
  if vgrade>90 then dbms_output.put_line('优秀!');
  elsif vgrade>80 and vgrade<=90 then dbms_output.put_line('良好!');
  elsif vgrade>70 and vgrade<=80 then dbms_output.put_line('中等!');
  elsif vgrade>60 and vgrade<=70 then dbms_output.put_line('及格!');
  else dbms_output.put_line('不及格');
  end if;
end;

4.根据输入的学号查询该名学生的姓名,若没有输入学号的学生,则抛出异常“没有该学生”。

declare 
  vid s.sid%type:=&a;
  vname s.sname%type;
  vdept s.department%type;
begin
  select sname,department into vname,vdept from s where sid=vid;
  dbms_output.put_line(vname||'  '||vdept);
  exception
  when no_data_found then dbms_output.put_line('没有该学生');
end;

5.修改‘0811101’同学选修的‘C002’的成绩,若超出100,则不做修改。(如果建表时已经设置了成绩不能超出100的约束,则不能在此表执行)

declare
  vgrade sc.grade%type;
begin 
  select avg(grade) into vgrade from sc where sid=103 and cid=3245;
  if vgrade>=100 then dbms_output.put_line('不能修改!');
  else update sc set grade=90 where sid=103 and cid=3245;
  end if;
end;

6.创建一个函数,根据输入的课程号,输出最高成绩

create or replace function mt(vcid sc.cid%type) return number
is 
  mgrade sc.grade%type;
begin
  select max(grade) into mgrade from sc where cid=vcid;
  return mgrade;
end;
 select mt(3245) from dual;

7.创建名为“F1”的函数,以课程号为参数,返回该门课程的平均成绩。

create or replace function F1(vno sc.cid%type)return number
is
  vgrade sc.grade%type;
begin
  select avg(grade) into vgrade from sc where cid=vno;
  return vgrade;
end;
select F1(3245) from dual;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值