Создать процедуру sql успешно с ошибкой компиляции

Я новичок в sql и изучаю процедуры, функции и анонимные блоки. Я проверил свой код и не вижу орфографических ошибок, вызывающих ошибку компиляции. Не могли бы вы помочь мне понять, что я делаю неправильно здесь? Это вопрос 4. Преобразовать файл show_class_offerings.sql в процедуру. Примите дату начала и дату окончания. Для каждого найденного курса отобразите CLASS_ID, START_DATE, преподавателей FIRST_NAME и LAST_NAME, название курса и SECTION_CODE, а также среднюю оценку. Найдите среднюю оценку, вызвав функцию calculate_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? Он укажет вам на номер строки с ошибкой. Пожалуйста, отредактируйте вопрос и добавьте текст ошибки.

astentx 13.12.2020 23:23

Я не уверен, потому что для этого класса я использую oracle APEX, а не sqldeveloper. Спасибо, что нашли время ответить, я отредактировал и добавил текст ошибки.

miapaulina 13.12.2020 23:26

Есть два утверждения «IS», я бы удалил второе.

massie 13.12.2020 23:33

Сообщение означает, что процедура создана, но недействительна, поэтому в ней есть ошибка.

massie 13.12.2020 23:34

Вы можете запустить select * from user_errors после создания процедуры, чтобы получить более подробную информацию об ошибке.

GMB 13.12.2020 23:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
5
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Удалить второй IS:

CREATE OR REPLACE PROCEDURE show_class_offerings(
  p_start_date IN DATE,
  p_end_date   IN DATE
)
IS
  v_avg_grade NUMBER;

  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
           INNER JOIN courses co
           ON (cl.course_id = co.course_id)
           INNER JOIN instructors i
           ON (cl.instr_id = i.instructor_id)
    WHERE  start_date BETWEEN p_start_date AND p_end_date;
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;
/

(Примечание. Вы также можете использовать соединения ANSI вместо менее читаемых устаревших соединений с запятыми.)

db<>рабочий пример здесь

Другие вопросы по теме