【发布时间】:2020-12-13 22:17:35
【问题描述】:
我是 sql 初学者,学习程序、函数和匿名块。我检查了我的代码,没有发现拼写错误导致编译错误。你能帮我理解我在这里做错了什么吗?这是问题 4. 将文件 show_class_offerings.sql 转换为过程。接受开始日期和结束日期。对于找到的每个班级,显示 CLASS_ID、START_DATE、讲师 FIRST_NAME 和 LAST_NAME、课程 TITLE 和 SECTION_CODE 以及平均成绩。通过调用函数 compute_average_grade 查找平均成绩。
CREATE OR REPLACE PROCEDURE show_class_offerings
(p_start_date IN DATE,
p_end_date IN DATE)
IS
v_avg_grade NUMBER;
IS
CURSOR classes_info_cur IS
SELECT cl.class_id, cl.start_date, i.first_name,
i.last_name, co.title, co.section_code
FROM classes cl, courses co, instructors i
WHERE start_date BETWEEN p_start_date AND p_end_date
AND cl.course_id = co.course_id
AND cl.instr_id = i.instructor_id;
BEGIN
DBMS_OUTPUT.PUT_LINE ('Date range: Between ' ||
p_start_date || ' and ' || p_end_date || '.');
DBMS_OUTPUT.PUT_LINE('Classes Information.');
FOR classes_info_rec IN classes_info_cur
LOOP
v_avg_grade := compute_average_grade(classes_info_rec.class_id);
DBMS_OUTPUT.PUT_LINE(
'Class ID' || classes_info_rec.class_id ||
'-Average Grade' || v_avg_grade ||
'-Start Date' || classes_info_rec.start_date ||
'-Instructor' || classes_info_rec.first_name ||
classes_info_rec.last_name ||
'-Course Title' || classes_info_rec.title ||
'-Offering Section' || classes_info_rec.section_code);
END LOOP;
END show_class_offerings;
错误:ORA-24344:编译错误成功
【问题讨论】:
-
SQL*Plus 告诉您什么?它会将您指向有错误的行号。请编辑问题并添加错误文本。
-
我不确定,因为对于这个类,我使用 oracle APEX,而不是 sqldeveloper。感谢您花时间回答,我已经编辑并添加了错误文本。
-
有两个“IS”语句,我会删除第二个。
-
该消息表示程序已创建但无效,因此其中有错误。
-
您可以在创建过程后运行
select * from user_errors以获取有关错误的更多详细信息。