Leslie will lucky 2022-12-23 18:15 采纳率: 66.7%
浏览 25
已结题

ORACLE中的pl/aql

SET serveroutput ON
declare
  v_name student.name %type := &a_name;
  v_grade             NUMBER;
  e_stu               EXCEPTION;
begin
  SELECT sc.grade
  INTO v_grade
  FROM student,
    course,
    sc
  WHERE student.sno=sc.sno
  and sc.cno       =course.cno
  and cname        = 'math'
  AND name = v_name;
  IF v_grade       < 60 THEN
    raise e_stu ;
  ELSE
    dbms_output.put_line(v_name||v_grade);
  end if;
  
EXCEPTION
WHEN e_stu THEN
  dbms_output.put_line('此学生需要补考!');
WHEN no_data_found THEN
  dbms_output.put_line('查无此学生!');

end; 




img

题目
编写带有异常处理的PL/SQL程序:从键盘上随机输入某个学生的姓名,判断该学生选修“math”的成绩是否及格。(1)如果不及格,触发自定义异常,输出:“此学生需要补考!”;(2)如果及格,则输出成绩。(3)如果该学生不存在,触发系统预定义异常,输出:“查无此学生!”
补全代码:
declare
v_sname student. sname%type:=&a_sname;
v_grade number;
e_stuexception;
begin【补全代码】;
exception【补全代码】;
end;

这个已经是修改n遍的答案了 但是还是报错,我认为原因可能和表里设置的数据类型没有设置好有关系 然后我又去修改了表 但是如图所示还不行
主要有几个问题 :

  1. 如果没有设置student,sc,course三张表的关联,例如主键外键这样的 对select from有没有影响
  2. select 语句的 where后面筛选的条件有没有顺序关系
  3. 为什么前面 几个列名前要加表名, 而后面的name,cname(c=course )却不用
  4. 为什么grade声明的时候直接跟数据类型 而不是像 course.grade %type
    感谢友友们
  • 写回答

1条回答 默认 最新

  • Leslie will lucky 2022-12-24 18:25
    关注

    我已经学会了 哈哈哈

    评论

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 修改了问题 12月23日
  • 修改了问题 12月23日
  • 修改了问题 12月23日
  • 展开全部

悬赏问题

  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏