Database 组件';部门ID';必须声明为PLSQL
我有以下代码Database 组件';部门ID';必须声明为PLSQL,database,plsql,Database,Plsql,我有以下代码 DECLARE TYPE t_dep IS TABLE OF DEPARTMENTS%ROWTYPE INDEX BY BINARY_INTEGER; v_dep t_dep; BEGIN FOR dep_rec IN (SELECT department_name, location_id FROM Departments ORDER BY department_id ASC) LOOP
DECLARE
TYPE t_dep IS TABLE OF DEPARTMENTS%ROWTYPE
INDEX BY BINARY_INTEGER;
v_dep t_dep;
BEGIN
FOR dep_rec IN
(SELECT department_name, location_id FROM Departments
ORDER BY department_id ASC)
LOOP
v_dep(dep_rec.department_id) := dep_rec;
END LOOP;
END;
我得到了这个错误:
Error report -
ORA-06550: line 10, column 23:
PLS-00302: component 'DEPARTMENT_ID' must be declared
ORA-06550: line 10, column 9:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
这是部门表。
我的任务是:
编写一个匿名PL/SQL块,该块通过包含
部门数据。记录表应使用departmentid作为主键,每个元素应
包含部门名称和位置id。数据应按记录表升序存储在索引中
部门ID的顺序。块不应显示任何输出
如何处理此错误?
部门记录
包含部门名称
和位置id
,而您在此语句中使用部门id
:
v_dep(dep_rec.department_id) := dep_rec;
-------------
由于它不存在,您的代码将失败
如何修复它?将department\u id
包含到游标中,以便循环的选择语句
此外,由于部门
表包含4列,您必须将它们全部选中才能正常工作(目前,经理ID
缺失)。DEP\u REC
包含部门名称
和位置ID
,而您在此语句中使用部门ID
:
v_dep(dep_rec.department_id) := dep_rec;
-------------
由于它不存在,您的代码将失败
如何修复它?将department\u id
包含到游标中,以便循环的选择语句
此外,由于部门
表包含4列,您必须将它们全部选中才能使其正常工作(当前,经理ID
缺失)。当您在该隐式光标上创建循环时
SELECT department_name, location_id
FROM Departments
ORDER BY department_id ASC
您说您只对部门名称、位置\u id
列感兴趣
如果您甚至需要ID,则必须将其添加到选择列表中:
SELECT department_name, location_id, department_id
此外,您的结构定义为
TABLE OF DEPARTMENTS%ROWTYPE
因此,您需要以正确的顺序填充表中的所有列:您还需要manager\u id
另一点:如果您将一个结构定义为INDEX BY BINARY\u INTEGER
,则必须使用二进制整数对其进行索引;在这个隐式游标上创建循环时,您确定部门id是二进制索引吗
SELECT department_name, location_id
FROM Departments
ORDER BY department_id ASC
您说您只对部门名称、位置\u id
列感兴趣
如果您甚至需要ID,则必须将其添加到选择列表中:
SELECT department_name, location_id, department_id
此外,您的结构定义为
TABLE OF DEPARTMENTS%ROWTYPE
因此,您需要以正确的顺序填充表中的所有列:您还需要manager\u id
另一点:如果您将一个结构定义为INDEX BY BINARY\u INTEGER
,则必须使用二进制整数对其进行索引;你确定department\u id
是一个二进制索引吗?是的,我添加了department\u id和manager\u id,这很有效。但是任务说:每个元素应该包含部门名称和位置id。感谢您的回复!是的,我加上了部门id和经理id,效果不错。但是任务说:每个元素应该包含部门名称和位置id。感谢您的回复!我得到这个错误:表达式的类型错误。我想那是因为我没有添加经理id;您必须将MANAGER_ID添加到游标的FOR循环中。我得到以下错误:表达式的类型错误。我想那是因为我没有添加经理id;您必须将MANAGER_ID添加到游标的FOR循环中。