我试图打印一个关联数组的键,用于下面显示的简单逻辑
declare
type std_marks_arr is table of number(10)
index by BINARY_INTEGER;--
std_marks std_marks_arr;
cursor std_id is select student_code from student_master;
begin
for i in std_id
loop
select sum(marks) into std_marks(i.student_code) from student_marks
where student_code=i.student_code;
end loop;
for i in std_marks.first..std_marks.last
loop
dbms_output.put_line(rpad(std_marks(i).key,10,' ')||rpad(std_marks(i),10,' '));
end loop;
end;`
它给出了一个错误
我使用'Invalid reference to variable 'NUMBER'
key
行
我知道可以通过其他方式完成,但我必须知道如何在这种情况下打印索引。
答案 0 :(得分:2)
您的变量std_marks
具有关联数组类型作为其类型,它没有属性key
(实际上,没有属性 - 它只是一个值数组)。
在您的代码中,i
是索引,它将是一个简单的数字,因此您只需使用它:
for i in std_marks.first..std_marks.last
loop
dbms_output.put_line(rpad(i,10,
' ')||rpad(std_marks(i),10,' '));
end loop
你的代码中还有一些其他问题,它会阻止它编译(例如缺少分号)和运行(例如,除非你的学生代码形成一个数字序列没有间隙的系列,你的代码将引发NO_DATA_FOUND,因为你的loop尝试访问从First索引值到Last索引值的所有数组元素,包括间隙)。