Создайте процедуру, называемую пререквизитами. Создайте пользовательскую запись с четырьмя полями: course_no, description, cost и prerequisite_rec. Последнее поле, prerequisite_rec, должно быть пользовательской записью с тремя полями: prereq_no, prereq_desc и prereq_cost. Для всех курсов, которые имеют обязательный курс, заполните пользовательскую запись всеми соответствующими данными и отобразите ее информацию на экране.
Я пытаюсь выяснить этот вопрос, и формулировка из него просто сбивает с толку. Насколько я понимаю, процедура должна создаваться вместе с записью с 4 пользовательскими полями, но 1 из этих 4 полей также является самой записью с 3 полями в ней.
Это правильно?
Вот то, что у меня так далеко.
CREATE OR REPLACE PROCEDURE prerequisites (course_no IN NUMBER,
description OUT VARCHAR2, cost OUT NUMBER, prereq_no OUT NUMBER
,prereq_desc OUT VARCHAR2, prereq_cost OUT NUMBER)
IS
v_course course.course_no%TYPE;
BEGIN
v_course := course_no;
SELECT description, cost, prerequisite
INTO description, cost, prereq_no
FROM course
WHERE course_no = v_course;
SELECT description, cost
INTO prereq_desc, prereq_cost
FROM course
WHERE course_no = prereq_no;
END;
/
DECLARE
TYPE prereqs IS RECORD (prereq_no NUMBER, prereq_desc VARCHAR2(50), prereq_cost NUMBER);
TYPE courses IS RECORD (course_no NUMBER, description VARCHAR2(50), cost NUMBER,
prerequisite_rec prereqs);
BEGIN
courses.course_no := 25;
prerequisites(courses.course_no, courses.description, courses.cost, prereqs.prereq_no
,prereqs.prereq_desc, prereqs.cost);
DBMS_OUTPUT.PUT_LINE(courses.course_no || ' and ' || prereqs.prereq_no);
END;
/
Процедура в порядке, но я получаю ошибку ORA-06550 при выполнении основного блока.
ORA-06550: line 7, column 5:
PLS-00330: invalid use of type name or subtype name
ORA-06550: line 7, column 5:
PL/SQL: Statement ignored
ORA-06550: line 9, column 19:
PLS-00330: invalid use of type name or subtype name
ORA-06550: line 9, column 5:
PL/SQL: Statement ignored
ORA-06550: line 12, column 26:
PLS-00330: invalid use of type name or subtype name
ORA-06550: line 12, column 5:
PL/SQL: Statement ignored
Есть идеи?