Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 组件';部门ID';必须声明为PLSQL_Database_Plsql - Fatal编程技术网

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循环中。