【发布时间】:2018-11-19 01:25:26
【问题描述】:
创建一个称为先决条件的过程。创建包含四个字段的用户定义记录:course_no、description、cost 和prerequisite_rec。最后一个字段prerequisite_rec 应该是用户定义的记录,包含三个字段:prereq_no、prereq_desc 和 prereq_cost。对于所有具有先修课程的课程,用所有相应的数据填充用户定义的记录,并将其信息显示在屏幕上。
我正在试图弄清楚这个问题,而其中的措辞令人困惑。据我了解,将创建一个过程以及包含 4 个用户定义字段的记录,但是这 4 个字段中的 1 个也是包含 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
有什么想法吗?
【问题讨论】:
-
“对于所有有必修课的课程,在用户定义的记录中填充...” - 所以,应该有一个名为 course 什么的表。它的结构是什么?编辑您的问题并显示表格的定义并添加一些示例数据。
标签: stored-procedures plsql oracle12c record